Re: [問題] free記憶體後的問題

看板C_and_CPP作者 (我要加入劍道社!)時間13年前 (2012/09/25 13:42), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)

09/25 13:19,
我知道realloc不會free掉arr1,所以我有另外free(arr1)
09/25 13:19
哪本書寫的? 依照 C99 標準 7.20.3.4p2 The realloc function deallocates the old object pointed to by ptr and returns a pointer to a new object that has the size specified by size. ... If memory for the new object cannot be allocated, the old object is not deallocated and its value is unchanged. 只有在無法配置空間時,realloc 才不會把舊有空間 free 掉。

09/25 13:20,
對~我預期也是arr1跟arr2都找不到
09/25 13:20

09/25 13:20,
所以L大的意思是這是非合理行為,無法解釋的結果嗎??
09/25 13:20
這叫「未定義行為」,也就是任何結果都有可能 若要解釋為什麼舊的值還在,當然是可以解釋 但對你而言並沒有幫助,因為任何結果都可能發生 今天是程式正常結束,也許明天是程式當掉,後天是引爆核彈 初學者先學會避免未定義行為就好,不要花時間去研究未定義行為的現象 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.3.139

09/25 13:45, , 1F
感謝你!!
09/25 13:45, 1F

09/25 20:46, , 2F
感謝 修正了我長期以來的誤解
09/25 20:46, 2F

09/25 20:59, , 3F
要更新一下C99的知識了
09/25 20:59, 3F
文章代碼(AID): #1GOKHIYG (C_and_CPP)
文章代碼(AID): #1GOKHIYG (C_and_CPP)