2008年11月22日 星期六

delete a, b, c;

雖然用C++在工作上也有三四年的時間了,可是有時候有一些細節的觀念還不是很清楚
可能是我不用功好好k書吧 orz.. 而且自己接觸的是Embedded System.. C++技術都沒進步的 orz..

----------------------------------------


int *a, *b, *c;
a = new int;
b = new int;
c = new int;
// ....
delete a, b, c;


上面這樣的寫法會造成memory leak,主要是因為delete a, b, c只會刪除a而已,且乎略b, c
我一開始看到memory leak的時候還蠻訝異的,明明int *a, *b, *c就是正常的,會宣告出a,b,c三個int pointer
為什麼會delete a, b, c卻只會對a動作呢??

主要是delete a, b, c裡面還包成逗號運算元
delete a, b, c 等於(delete a), b, c;
先delete a之後再對b, c取值。
所以要寫delete動作時還是乖乖的一行一行寫吧
delete a;
delete b;
delete c;

沒有留言:

LinkWithin

Related Posts with Thumbnails