01/10/2018, 15:37
Mình có thể delete vùng nhớ mà chưa cấp phát được không?
Cho mình hỏi ngu tí là mình xóa vùng nhớ khi chưa cấp phát được không ạ?
Cụ thể mình tạo 1 mảng 2 chiều:
int **x=new int*[10];
for(int i=1;i<=9;i++) x[i]=new int[15];
for(int i=0;i<=9;i++) delete[] x[i];
delete[] x;
Mình chạy chương trình thì nó báo lỗi, không hiểu lắm ạ.
Bài liên quan
Dòng 1 khai báo x là con trỏ cấp 2.
Dòng 2 gán lại x là con trỏ cấp 1 10 lần ??
Dòng 3 xoá con trỏ x[i] trong khi tại dòng 2 gán x là con trỏ cấp 1 thì làm gì có con trỏ x[i].
Mình đã edit lại code của mình.
1/ Dĩ nhiên là ko dc, ở đây cấp phát từ index 1 mà đi xóa luôn index 0 nên chương trình báo lỗi!
2/ Em nên viết code thế này để luôn nhớ là index từ 0 đến size - 1: for (int i = 0; i < 10; ++i)