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 ạ.

Văn Dương viết 17:50 ngày 01/10/2018

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].

Le Ly Vinh viết 17:48 ngày 01/10/2018

Mình đã edit lại code của mình.

Nguyễn Phạm Anh Quân viết 17:46 ngày 01/10/2018

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)

Bài liên quan
0