30/09/2018, 17:24

Dùng con trỏ để xóa mảng heap trong C++

Mọi người giải đáp giúp mình với!
Mình có đoạn code như sau:

int *pInt=new int[10];

Mình muốn sử dụng con trỏ để xóa một phần tử trên heap, mặc dù đã thử nhiều cách sau:

int *pInt = new int[10];
int *temp = pInt;
*temp = 0;
temp += 9;
*temp = 9;
delete temp;

hay:

delete (pInt+9);

Cũng vẫn bị lỗi và không thể nào xóa được! Tại sao vậy các bạn?

Gió viết 19:38 ngày 30/09/2018

Mình nghĩ là không có cách nào để giải phóng một phần của mảng động. Nếu bạn muốn dùng bộ nhớ ít hơn khi không cần những phần tử cuối:

  • dùng realloc: cái này là hàm của C.
  • dùng 1 mảng mới ít phần tử hơn, copy sang và giải phóng mảng cũ
Đại Dương viết 19:29 ngày 30/09/2018

Mình cũng đoán như bạn vậy. Tưởng có cách nào khác! Tks nhé!

Trần Toàn viết 19:34 ngày 30/09/2018

sử dụng con trỏ để xóa một phần tử trên heap, mặc dù đã thử nhiều cách sau:

Xóa toàn bộ rồi cấp phát lại được chứ bạn?

Bài liên quan
0