|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
C++中new與delete的問題
int* p=new int[100];
int* p1=&(p[20]);
delete p1;
delete p;
這會怎麼樣?
也就是分配了一個連續的空間後,對中間的空間執行delete會怎麼樣? |
C++中new與delete的問題
應該delete []p;
delete p1; |
C++中new與delete的問題
.......
this will take much menmory and if the function end pp[] will be lost !!! |
C++中new與delete的問題
如果有這樣一段代碼:
int* p1=new int[10];
int* p2=new int;
delete []p1;
delete p2;
在《Effective C++》中看到:
如果 delete p1;
結果未定義;
如果 delete []p2;
結果也沒有定義。 |
C++中new與delete的問題
一個內存只能delete一次
多次delete會報錯的
所以delete完後把指針指向0是一個好習慣
還有你那樣用是錯誤的用法
(都是指原帖) |
C++中new與delete的問題
int*p1=newint[10];
int*p2=newint;
delete[]p1;
deletep2;
這個用法應該是正確的用法
不會報錯吧 |
C++中new與delete的問題
UINT* m_data;
delete[] m_data;
還是delete m_data;
還是都可以 |
C++中new與delete的問題
應該說如果是new 數組的應該使用delete [] |
| |