C++ Glibc在调用新关键字C+;时检测到malloc()内存损坏(0xb6179bb8)+;

C++ Glibc在调用新关键字C+;时检测到malloc()内存损坏(0xb6179bb8)+;,c++,c,glibc,C++,C,Glibc,我的程序运行到一个点,调用new关键字会导致上述错误。i、 e.char*a=新字符[100]。误差是可重复的,每次都是如此。我一直运行程序,直到调用new关键字为止。这似乎是内存位置损坏的一点,但我不知道他是什么问题 此错误的可能原因是什么?此错误表示您已损坏系统内存管理器的簿记数据。 此类损坏通常是指针使用不当的结果,例如 使用未初始化的指针 在引用的内存被释放后使用指针(释放可能是通过另一个指针进行的) 在数组边界之外写入 错误的原因是您的代码中存在错误。由于您没有发布任何代码,因此不可

我的程序运行到一个点,调用new关键字会导致上述错误。i、 e.
char*a=新字符[100]
。误差是可重复的,每次都是如此。我一直运行程序,直到调用new关键字为止。这似乎是内存位置损坏的一点,但我不知道他是什么问题


此错误的可能原因是什么?

此错误表示您已损坏系统内存管理器的簿记数据。 此类损坏通常是指针使用不当的结果,例如

  • 使用未初始化的指针
  • 在引用的内存被释放后使用指针(释放可能是通过另一个指针进行的)
  • 在数组边界之外写入

错误的原因是您的代码中存在错误。由于您没有发布任何代码,因此不可能比这更具体。请查看您代码中以前的内存分配,可能有问题。或者,您可能会在分配前损坏堆写入到不适当的地址。0xb6179bb8是。。。?让我在我的错误大全里查一下。更严重的是,这很可能是堆内存使用中的另一个错误:多次删除/释放内存、单个var和数组new/delete不匹配、在保留的内存块之前或之后覆盖内存,但可能是任何其他类型的行为,这些行为会导致未定义的行为。您通常可以使用valgrind或purify之类的工具来查找导致此问题的非法操作的位置。。。。