今天qq某大俠問我,為啥他的代碼會(huì)crash
char* pdata = new char(14245); ::memset( pdata, 0, 14245 );
我馬上運(yùn)行代碼,結(jié)果果真是Access Violent。
之后試過malloc都沒有問題
隨機(jī)我把這段代碼刪除,過了幾分鐘后,我按照記憶,重新寫下代碼
char* pdata = new char[14245]; ::memset( pdata, 0, 14245 ); 結(jié)果不crash了。細(xì)細(xì)一看
。
。
。
為啥要調(diào)用char的構(gòu)造函數(shù)傳入14245的參數(shù)呢?這樣只能new出來1個(gè)字節(jié),但是memset又寫了14245個(gè)字節(jié),不掛才有鬼了
之后問過很多人,基本都沒看出來,可見這個(gè)寫法極其騙人
posted on 2009-09-03 16:10 戰(zhàn)魂小筑 閱讀(1284) 評(píng)論(3) 編輯 收藏 引用 所屬分類: 程序調(diào)試技術(shù) 、C++/ 編程語(yǔ)言