Re: [問題] delete / new , free / malloc
基於上面那篇@@
我趕快寫了一段測試code
while(true)
{
Foo* XD = (Foo*)new char[1000];
1. XD ++;
delete XD; //馬上出現assertion
////////////////////////////
2. char * ptr = (char*)XD;
delete ptr;
////////////////////////////
}
1. 馬上跳出assertion 讓我非常不解
我預期是他要馬就leak sizeof (Foo) bytes 然後不應該當掉
想不到他會出現奇怪的assertion
讓我對他memory management的機制感到不解.....
另外 我把XD++ 趕給遮起來
跑程式用工作管理員看mem的狀況 是完全沒leak的
但是我並沒有用delete []XD;
他到底是怎麼maintain 導致不leak
查一下文章
都是說
delete XD 就是只對單一 元素
我就理解成 他只會delete sizeof (Foo)個bytes
誰知道他整串都delete掉了
這是誰做的手腳??
VC? OS?
2. 基於上面不leak的情況
我用2. 只用一個char*指過去
只針對一個char * 作delete
誰知道也不leak
這是微軟VC compiler自己做了一些手腳讓我剛好沒leak嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.64.222
→
01/11 18:27, , 1F
01/11 18:27, 1F
推
01/11 18:30, , 2F
01/11 18:30, 2F
→
01/11 19:18, , 3F
01/11 19:18, 3F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 7 篇):