由于我的代码中存在一些内存错误,因此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