[問題] delete / new , free / malloc

看板C_and_CPP作者 (我愛阿蓉)時間14年前 (2012/01/11 17:31), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/7 (看更多)
new / delete vs malloc / free 請教各位一個小問題 我看msdn的一個sample code http://msdn.microsoft.com/en-us/library/windows/desktop/aa365917(v=vs.85).aspx 這底下有一個sample 有這行 pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(ulOutBufLen); 他使用了malloc 但聽說 能用new / delete 就盡量用 所以 我想使用new 這operator來做 但有個疑問 ulOutBufLen 這個值 有可能 "大於" sizeof(IP_ADAPTER_INFO). 假如我用 pAdapterInfo = (IP_ADAPTER_INFO *) new char[ulOutBufLen]; 這樣安全嗎 如果沒問題的話 我使用 delete pAdapterInfo; 就能把這一串連續空間標記起來嗎? 我是不曉得他delete怎麼去判定 他連續空間哪一段是他配置的 我很怕 delete pAdapterInfo; 只是把sizeof(IP_ADAPTER_INFO)byte的記憶體給標記 而實際上 我是需要delete 掉sizeof(IP_ADAPTER_INFO) bytes的資訊. 相較於delete / new malloc / free 是不是就沒這問題了? free(pAdapterInfo) 他就是會從 這個起始位址 free到 他剛剛配置的空間的結尾. 因為 我看他範例就直接free了... ps.請問有沒有什麼方式 可以驗證 我確實delete 標記掉了多少byte嗎? 因為我也不知道我自己這樣寫有沒有問題~~ 謝謝 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66 ※ 編輯: QQ29 來自: 122.147.15.66 (01/11 17:33)

01/11 18:45, , 1F
我納悶的是,為什麼不直接用tool查有沒有mem leak ?
01/11 18:45, 1F

01/11 18:45, , 2F
或直接下斷點追new源碼怎麼寫的?vc這部份做得很好.
01/11 18:45, 2F

01/11 22:18, , 3F
為什麼不直接new IP_ADAPTER_INFO[...];
01/11 22:18, 3F
文章代碼(AID): #1F3LRup7 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1F3LRup7 (C_and_CPP)