相关疑难解决方法(0)

批判我的非侵入式堆调试器

这是昨天批判我的堆调试器的后续行动.正如bitc所建议的,我现在将分配的块的元数据保存在单独的手写哈希表中.

堆调试器现在检测到以下类型的错误:

  1. 内存泄漏(现在有更详细的调试输出)
  2. 传递给删除的非法指针(也处理双重删除)
  3. 错误的删除形式(数组与非数组)
  4. 缓冲区溢出
  5. 缓冲下溢

欢迎提前讨论和感谢!

#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)

c++ debugging heap

13
推荐指数
1
解决办法
1353
查看次数

main 返回后出现分段错误

我在 Linux 上有一个很长的 c 程序,在 main 返回后出现分段错误。这是一个很长的程序,所以我无法发布它。那么你能帮我看看什么会犯这样的错误吗?

谢谢。

哇,这些答案来得真快。谢谢你们。我想我已经解决了,我忘记了分配一个字符串并将其用作缓冲区。现在我已经分配了它,它不会向我发出分段错误的信号。

再次感谢大家。

c linux program-entry-point segmentation-fault

5
推荐指数
1
解决办法
1万
查看次数