AddressSanitizer:堆栈溢出地址错误?
问题描述:
所以,我已经做了一个函数来反转链表使用递归。我的反转函数工作正常,但是当我尝试在我的可执行文件上运行asan时,它在反向函数的特定地址处给我一个堆栈溢出错误。我已经尝试了一切来解决它。我试图在工作完成后让堆栈中的所有变量为NULL。我已经从堆中取消了所有内存。我在文件上运行了valgrind,它告诉我所有的内存已经被释放并且没有泄漏。我该怎么办?AddressSanitizer:堆栈溢出地址错误?
AddressSanitizer: stack-overflow
P.S.我在C++中使用了clang ++编译器。
答
ASAN增加了您的内存需求,因为它将标记值插入堆栈。所以有可能你没有正常达到堆栈限制,但你现在启用了ASAN,因为每个递归调用现在使用的堆栈空间比以前多。
在C++中最好的做法是不要递归太深,但是你也可以增加你的进程的堆栈限制,例如,在bash中:
ulimit -s unlimited
您的代码有一个错误。 –
什么样的错误? – Shank
@Akkida_x基于你给我们什么,我猜想堆栈溢出 – kfsone