1 、在一個函數中new了一塊空間,而後再另外一個函數使用,當最後要釋放時,若是釋放時出現堆棧錯誤,多是釋放堆棧太快了,數據來不及讀取處理,須要在關閉某些函數資源後sleep一下子,再delete在有效,不然可能會出現錯誤。(這只是我的狀況)函數
好比:測試
我在函數A中new了一塊buffer,而後再call back 函數中使用這塊空間,在執行結束後,咱們須要關閉一些資源,這是咱們就須要sleep(100)//休眠0.1秒,delete buffer纔不會出錯。可是切記,有new必定要delete掉,否則會出現內存泄漏,關於內存泄漏可使用vld來測試,具體使用方法能夠百度。內存
二、對於字對齊問題,短字符向長字符對齊,須要注意是否有符號。資源
好比:變量
在訪問一個內存爲char *prt;而後DWORD addr初始化爲1,而後addr+=prt;這是就須要注意了,由於聲明的是有符號char *,DWORD是32位,而char *是8位,當取char地址時,若是第一位1,那麼當執行addr+=prt時,短的向長的補齊,且低位對齊,那麼DWORD 的 addr應該爲0000000000000000000000000000001;而當prt設爲10001111時,prt會前面補24個1,那麼最後addr+=prt執行的結果是1111111111111111111110010000(具體多個0或者1就本身慢慢數數清楚啊,我也是沒數清楚的),而不是0000000000000000000010010000,因此在對於地址+操做時,且是長度不同的變量保持時,必定要用unsigned 代表是無符號的。百度