簡體   English   中英

malloc getaddrinfo中的校驗和不正確

[英]malloc incorrect checksum in getaddrinfo

我經常(大約70%的時間)收到錯誤消息

malloc: *** error for object 0x1567c574: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

在這行代碼中

getaddrinfo(baseServer, "http", &hints, &serverinfo);

現在,當我檢查這些值時, baseServer是一個有效的字符串(通常是www.a-cstudios.com ),顯然"http"從未釋放以導致此錯誤, hintsstruct addrinfo填充了正確的值,應該是這樣,而serverinfoNULL ,我相信應該是。 如果所有這些值都正確,並且我在這里從未釋放過任何對象,為什么我會在此行中得到錯誤?

問題不在於您要在這里釋放一些東西。 問題甚至不在這里 getaddrinfo()函數必須為其返回的addrinfo結構的鏈表分配存儲空間,因此它必須在malloc()調用malloc() 而且malloc()注意到程序中的其他地方,某些東西已經寫入了一個空閑塊,並且正在對其進行報告。

您可以通過認真執行始終在釋放指針后立即將指針設置為NULL的策略,來幫助防止此類事情(將您寫入不再擁有的內存中)。 另外,valgrind。

好吧,好的,您可以通過在釋放指針后不使用指針來幫助避免這種情況,但是確保在釋放指針后始終立即將指針設置為NULL將有助於您找到正在使用它們的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM