调试断言失败大分配对齐-1 == 0

时间:2017-03-26 20:13:01

标签: c++ visual-studio

我想问一下是否有人遇到过这个问题以及如何解决这个问题。我在互联网上搜索,但我找不到任何有用的东西。它可以造成什么?有什么想法吗?我已经尝试调试我的应用程序,但很难找到它崩溃的地方。另一个问题是这个错误有时只会发生,当它发生时,它只在我的应用程序结束时。我需要一些提示,谢谢。

enter image description here

Link to full-size picture

1 个答案:

答案 0 :(得分:0)

您的应用程序试图在程序结束时返回先前分配的内存,这是正常的。但是,根据运行时库(xmemory模块),指针指向要释放的内存存在问题。

一些可能性:

  • 您的程序中可能会出现某种形式的内存损坏,因为运行时库指示传递给“释放此内存”函数的指针存在问题。 您可以禁用该检查,但这当然只会掩盖问题。

  • 您的项目由多个模块(DLL)组成,这些模块混合了不同的编译器设置。例如HAS_ITERATOR_DEBUGGING设置。确保所有模块都使用相同的设置进行编译。还有别人创建的模块!

  • 您已针对MSVC运行时的共享(DLL)版本进行了编译 库,您的项目设置与构建运行时库的设置之间存在一些奇怪的冲突。

一般情况下,我建议您查看调用堆栈调试窗口,以了解涉及哪些函数和对象。也许这毕竟是你的程序在某个地方破坏了记忆。

此外,尝试运行几次,看看你是否开始看到一个模式。例如,总是导致崩溃的相同功能/对象组合等。

当异常发生且程序暂停时,您只能看到调用堆栈窗口。这涉及在Visual Studio下以DEBUG模式运行程序(从你的截图看来你在调试器之外运行它)。