问题描述
||
这个问题已经在这里有了答案:
解决方法
仅当您向我们显示代码时,才能提供确切的解决方案。但是错误很明显。该代码释放无效或不再有效的内存。这意味着地址错误,因为例如在原始指针上执行了指针算术。或指针已被释放(双重释放)。
, 您最有可能尝试将未动态分配的内存“ 0”。也许您有不必要的
free
或类似的错字:free(&buf)
,而不是free(buf)
。
用-g
标志编译程序,然后通过调试器或内存调试器运行它。这将向您显示错误的确切位置。
, 看来您正在尝试free
和invalid pointer
。您可以使用类似“ 7”的内存检查程序来运行该程序,如下所示:
valgrind --tool=memcheck --leak-check=full --track-origins=yes --show-reachable=yes --log-file=val.log ./<executable> <parameters>
看一下ѭ9,您应该能够找出内存泄漏发生的位置。另外,您可以尝试按gdb/ddd (debuggers)
逐步执行代码。程序将在出现“ 11”的地方失败。要使代码为debuggable
,您将需要使用ѭ4re标志重新编译代码。
或者,您可以在此处发布代码,让社区查看您出了什么问题。