gpt4 book ai didi

c - 如何编写一个抛出 glibc 的自定义 free?

转载 作者:行者123 更新时间:2023-11-30 15:38:25 26 4
gpt4 key购买 nike

我正在重写一个自定义 malloc,我希望能够在双重释放或损坏时抛出 glibc 错误,而不是经典的 SegFault。这可能吗?

*** glibc detected *** a.out: double free or corruption (fasttop): 0x0804b048 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6ff0b)[0xb74baf0b]
/usr/local/gcc/gcc-cilk/lib/libstdc++.so.6(_ZdlPv+0x1f)[0xb7671b4f]
/usr/local/gcc/gcc-cilk/lib/libstdc++.so.6(_ZdaPv+0x1b)[0xb7671b9b]
a.out[0x8048983]
a.out[0x8048b12]
a.out[0x80487d7]
ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
Aborted

最佳答案

我认为这不容易完成,因为当两次调用 free() 时不会抛出异常 - 就像尝试分配内存但分配失败的情况一样 - 这是相当未定义的行为。查看this post了解更多详情。

你可以做的是实现你自己的机制来跟踪分配/释放的内存 - 有点像智能指针的工作方式。只有您会专门尝试确定内存何时被释放两次。

关于c - 如何编写一个抛出 glibc 的自定义 free?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21750237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com