除了上面的一个危险操作之外,还有这个操作也非常常见,见下程序。它直接导致内存泄漏。
给p new了一个空间,但是P却赋值p1,这样一来,*P占用的是P1的前10个内存了,原来的p的内存堆丢了,成了系统垃圾,自己不用,别人也用不了。
int* p = new int[10];
int* p1 = new int[11];
p = p1;
delete p;
p = NULL;
_CrtDumpMemoryLeaks();
Detected memory leaks!
Dumping objects ->
E:\work_station\mfc_station\test18\test18Dlg.cpp(146) : {76} normal block at 0x00384D60, 40 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
strcore.cpp(118) : {75} normal block at 0x00384D08, 16 bytes long.作者: we3o 时间: 2010-5-1 10:55 回复 1#we3o