由於我的代碼中存在一些內存錯誤,因此free(ptr)
僅在其他許多輸入中失敗。我遇到的錯誤消息之一是:確定空閒(ptr)是否會失敗
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
pspmxm: malloc.c:3551: munmap_chunk: Assertion `ret == 0' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff6f9d475 in *__GI_raise (sig=<optimized out>)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
該程序收到SIGABRT並結束。我想知道是否存在通知free(ptr)
將失敗的功能(例如,will_fail_free(ptr)
),以便根據返回值will_fail_free(ptr)
,不調用free(ptr)
。
我想用最少的代碼更改來解決這個問題。
我使用gcc
用於開發目的,mpixlc_r
用於並行運行。
爲了看看該函數是否會失敗,應該調用該函數:))看起來類似於暫停問題 – mangusta
您應該重新思考/重構您的內存分配策略。 – moooeeeep
首先,修復內存錯誤。第二,'int will_free_fail(void * ptr){return 0;}' – immibis