Mình đang làm 1 bài tập về class, thì phát hiện lỗi về cấp phát động, nguyên nhân là hàm delete ở detructor, sau đó mình viết 1 ct để test thì vẫn gặp lỗi tương tự:
Mã:
//mình ko tạo empty project
#include "stdafx.h"
int main()
{
int **test;
int i;
test= new*[3];
for(i=0;i<3;i++)
{
test[i]=new int[1];
test[0][i]=0;
}
for(i=0;i<3;i++)
delete[] test[i];
delete[] test;
return 0;
}
}
đoạn code chỉ là tạo 1 mảng con trỏ gồm 3 phần tử, mỗi phần tử là 1 mảng 1 chiều (mình cho mảng chỉ có 1 pt để đơn giản)
khi debug thì phát hiện lỗi ở delete[] test[i]
thông báo lỗi như sau :
"Windows has triggered a breakpoint in alloc.exe. // alloc là tên file project của mình
This may be due to a corruption of the heap, which indicates a bug in
alloc.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while alloc.exe has focus.
The output window may have more diagnostic information."
vào output window thì phát hiện dòng
"HEAP[alloc.exe] Heap block at X modified at Y past requested size of 28"
X và Y là mã hex,mình đoán là địa chỉ ô nhớ.
Note:
- mảng 1 chiều ko gặp lỗi.
- không gọi delete thì ct vẫn chạy bt.
- chỉ bị lỗi khi delete[] test[i] với i =0.
- khi mảng 2 chiều chỉ có 1 phần tử thì delete[] test[0] vẫn
hoạt động bt.
Nhờ mọi người kiểm tra giúp xem lỗi này là gì và xử lý như thế nào vậy!
View more random threads:
NGUỒN SỈ ÁO KHOÁC DENIM NỮ TPHCM CHẤT LƯỢNG CAO Bạn muốn nhập sỉ áo khoác denim nữ để bắt đầu việc buôn bán Online phong cách nhưng lại chưa có kinh nghiệm, muốn sắm xưởng sỉ xống áo vừa có thể giải...
Xưởng sỉ áo khoác jeans denim giá...