藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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 []



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com