gpt4 book ai didi

c - 使用 dlmalloc 的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:18 26 4
gpt4 key购买 nike

我正在使用 Doug Lea's dlmalloc memory allocator .但是,当我使用它时,我得到了 segmentation 。如果我使用普通的 malloc,我的程序运行良好。我记得我曾经读到你需要先调用一些初始化函数才能使 dlmalloc 工作,但我现在不记得是哪个函数了。我试图查看评论以找出哪个功能,但仍然找不到。

最佳答案

来自分配器源代码中的注释:

Tread-safety: NOT thread-safe unless USE_LOCKS defined non-zero

When USE_LOCKS is defined, each public call to malloc, free, etc is surrounded with a lock. By default, this uses a plain pthread mutex, win32 critical section, or a spin-lock if if available for the platform and not disabled by setting USE_SPIN_LOCKS=0.

您需要使用 USE_LOCKS 编译库,否则您可能会看到崩溃。

另一种可能性是您的程序表现出未定义的行为,不会导致常规 malloc 的后果。例如,它可能会在某处的分配区域后写入一个字节,但该字节可能是比您请求的大几个字节的内存块的一部分。在将程序与自定义分配器链接之前,使用 valgrind 检查您的程序是否存在“常规”malloc 内存错误。

关于c - 使用 dlmalloc 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308339/

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