这是昨天批判我的堆调试器的后续行动.正如bitc所建议的,我现在将分配的块的元数据保存在单独的手写哈希表中.
堆调试器现在检测到以下类型的错误:
欢迎提前讨论和感谢!
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <new>
namespace
{
// I don't want to #include <algorithm> for a single function template :)
template <typename T>
void my_swap(T& x, T& y)
{
T z(x);
x = y;
y = z;
}
typedef unsigned char byte;
const byte CANARY[] = {0x5A, 0xFE, 0x6A, 0x8D,
0x5A, 0xFE, 0x6A, 0x8D,
0x5A, 0xFE, 0x6A, 0x8D,
0x5A, 0xFE, 0x6A, 0x8D};
bool canary_dead(const byte* cage)
{ …
Run Code Online (Sandbox Code Playgroud) 我在 Linux 上有一个很长的 c 程序,在 main 返回后出现分段错误。这是一个很长的程序,所以我无法发布它。那么你能帮我看看什么会犯这样的错误吗?
谢谢。
哇,这些答案来得真快。谢谢你们。我想我已经解决了,我忘记了分配一个字符串并将其用作缓冲区。现在我已经分配了它,它不会向我发出分段错误的信号。
再次感谢大家。