调试断言失败

2024-04-20

我不断遇到这种情况"Debug assertions failed!"当我在调试模式下运行程序时出错。我尝试在 Visual C++ 网站上查找此错误,但这些解释对我来说太先进了,而且它们与我对问题的最佳猜测没有任何相似之处。

我已经检查了我的代码并缩小了错误发生点的范围。这似乎发生在代码部分中,在计算机移动到程序的下一部分之前,我手动删除了一大堆堆数组。当我注释掉释放旧堆数组的部分时,程序运行得非常好。

知道这是怎么回事吗?我的编程知识还是比较基础的。

Thanks

我使用的是 Visual C++ 2008。

更多信息:

断点在此代码块处触发:

 void operator delete(
    void *pUserData
    )
{
    _CrtMemBlockHeader * pHead;

    RTCCALLBACK(_RTC_Free_hook, (pUserData, 0));

    if (pUserData == NULL)
        return;

    _mlock(_HEAP_LOCK);  /* block other threads */
    __TRY

        /* get a pointer to memory block header */
        pHead = pHdr(pUserData);

         /* verify block type */
        _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));//<---- break point triggers 

        _free_dbg( pUserData, pHead->nBlockUse );

    __FINALLY
        _munlock(_HEAP_LOCK);  /* release other threads */
    __END_TRY_FINALLY

    return;
}

此代码来自选项卡:dbgdel.cpp

我“缩小”的导致此问题的代码部分是这样的:

delete [] topQuadanglesPositions;
delete [] fourClamps;
delete [] precaculatedClamp1;
delete [] precaculatedClamp2;
delete [] precaculatedClamp3;
delete [] precaculatedClamp4;
delete [] area;
delete [] hullConfiguration;
delete [] output;
delete [] prunedListClamp1;
delete [] prunedListClamp2;
delete [] prunedListClamp3;
delete [] prunedListClamp4;
delete [] numValidLocations;

如果我注释掉这一部分,程序就可以正常运行。


您的代码正在破坏堆。第一个片段来自 C 运行时库,断言告诉您程序正在将错误的指针值传递给删除运算符。

注释掉删除语句只会隐藏问题。当你继续开发程序时,它会以不同的方式回来困扰你。里面有一些调试技巧这个线程 https://stackoverflow.com/questions/1010106/how-to-debug-heap-corruption-errors。学习如何捕获此类错误是任何 C 或 C++ 程序员的必经之路。欢迎加群。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调试断言失败 的相关文章

  • 即使我没有#include ,为什么仍然可以使用 std::max 和 std::min ?

    include
  • vs2008中的线程窗口在哪里

    我试图在 VS 2008 中找到描述的线程窗口here http www wintellect com cs blogs jrobbins archive 2007 08 01 neat new multithreaded debuggin
  • 自定义可视化 Web 部件属性 sharepoint

    我在 Visual Studio 2012 中创建可视 Web 部件属性时遇到问题 我被提及http msdn microsoft com en us library ee231551 aspx http msdn microsoft co
  • 将数据集导出到 EXCEL

    我使用以下代码将数据库表中的字段导出到 Excel 中 我想要做的是能够编写一条 SQL 语句从多个表中检索字段并将其导出到 Excel 中 这段代码只允许我导出一张表 另外 如何显示保存提示对话框 示例代码将不胜感激 非常感谢 prote
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • 将数组从 C# 编组到 C++ 并返回:PInvokeStackImbalance

    我有一个 C 函数 我想从 C 访问它 问题是我不断收到 PInvokeStackImbalance 异常 但我不知道为什么 当检查异常被关闭时 一切都运行良好并且符合预期 我的 C 函数的签名是 extern C double solve
  • WPF MVVM将DataTable绑定到DataGrid不显示数据

    我有一个简单的控件 其中包含一个 DataGrid 其中 ItemsSource 绑定到 DataTable 当我填充 DataTable 时 我可以看到 DataGrid 中添加了行 但没有显示任何数据 我没有为此 DataGrid 使用
  • 在 C++ 中,严格别名规则中的“访问”是什么意思?

    3 10 10 说 如果一个程序试图access通过除以下类型之一之外的泛左值存储对象的值 行为未定义 然而 术语 访问 并没有在任何地方定义 在这种情况下这意味着read or 读取或修改 在 C 标准中 它被明确定义为读取或修改 然而在
  • C# - 如何将 IntPtr 缓冲区数据保存到文件(最快的方法)?

    我使用此代码将非托管代码中的 IntPtr 缓冲区中的字节保存到文件中 这是一个简单的回调函数 private void callback IntPtr buffer int length byte bytes new byte lengt
  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • 我应该使用函数还是无状态函子?

    这两段代码做同样的事情 如您所见 它将用于排序函数 哪个更好 我通常写后一种 但我看到一些程序员像以前那样做 struct val lessthan binary function
  • Boost async_write问题

    我将展示一些代码 void wh const boost system error code ec std size t bytes transferred std cout lt lt test int main int argc cha
  • 发生错误。", ExceptionMessage: "提供的 'HttpContent' 实例无效

    尝试将文件添加到 http 休息调用时出现此错误 responseJson 消息 发生错误 ExceptionMessage 提供了无效的 HttpContent 实例 它确实 正在使用 多部分 参数名称 内容 异常类型 System Ar
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 修改公共属性的访问修饰符是否是重大更改?

    如果我将公共属性的 setter 的访问修饰符从私有更改为公共 是否会导致引用它的其他程序集发生任何重大更改 UPDATE 这个问题是我 2012 年 1 月博客的主题 https ericlippert com 2012 01 09 ev
  • 在同一条线上铸造两次

    我在项目中看到了这段代码 b的类型是void void b int a int unsigned long b 这条线毫无意义吗 我的意思是 这与a int b在所有情况下 这可能会避免 64 位 Unix 系统上的编译器警告unsigne
  • #define, #ifdef #undef #endif

    我有以下代码 define PROC ADD void main void while 1 ifdef PROC ADD Do this code here then undefined it to run the code in the
  • 如何从标准输入读取一行,阻塞直到找到换行符?

    我试图从命令行的标准输入一次读取任意长度的一行 我不确定是否能够包含 GNU readline 并且更喜欢使用库函数 我读过的文档表明getline应该可以工作 但在我的实验中它不会阻塞 我的示例程序 include
  • jquery ajax“发布”调用

    我是 jQuery 和 Ajax 的新手 并且在 发布 方面遇到问题 我正在使用 jQuery Ajax post 调用将数据保存到数据库 当我尝试保存数据时 它将 null 传递给我的 C 方法 jQuery 看起来像这样 functio

随机推荐

  • 在本地主机上的 laravel 中将 slack 连接到 botman

    这是我在 laravel 中的路线文件 我将任何 url 与调用闭包的 botman 相匹配 该闭包为 botman 注册一个 slack 驱动程序并监听消息 hello 在闲暇时我试图设置Request URL在使用此事件订阅下http
  • 查找或创建竞争条件

    我正在尝试使用 ActiveRecordfind or create by column 但我从 Postgres 收到错误 让我知道它有时无法找到模型 并尝试插入一个模型 保持这张表的独特性非常重要 所以我添加了一个 unique gt
  • LuaJIT FFI 回调性能

    The LuaJIT FFI 文档 http luajit org ext ffi semantics html提到从 C 调用回 Lua 代码相对较慢 建议尽可能避免使用 不要将回调用于性能敏感的工作 例如考虑一个数值积分例程 它需要用户
  • 在 Windows 上绘制主题组合框

    我尝试模仿主题不可编辑组合框的外观 CBS DROPDOWNLIST using DrawThemeBackground https msdn microsoft com library windows desktop bb773306 v
  • Spark结构化流:书写不正确

    我将抄表记录以 JSON 形式从 kafka 2 11 0 10 0 1 流式传输到 Spark 2 1 中 我改用结构化流媒体 尽管kafka消费者确认传入数据 但我控制台和writeStream不动 我正在测试使用 pyspark pa
  • Android 如何在 PreferenceScreen 中的长时间操作期间禁用复选框

    我从 xml 加载了这个 PreferenceScreen 问题是 当我切换复选框时 我会启动一个服务 需要 5 10 秒才能连接到服务器 我怎样才能在这段时间禁用该复选框 由于布局膨胀 我看不到如何获取 checkbox setEnabl
  • C 中的十六进制到字符数组

    Given a string of hex values i e e g 0011223344 so that s 0x00 0x11 etc 如何将这些值添加到 char 数组 相当于说 char array 4 0x00 0x11 您无
  • iOS:接到电话时显示提醒?

    我希望在接到电话时触发本地通知 并显示警报 这可能吗 通话事件可以启动应用程序或触发通知吗 Skype 是如何被解雇的 有推送通知吗 Thanks 当各种事件发生时 您的应用程序委托将接收对各种 UIApplicationDelegate
  • 如何更改故事板上视图控制器的大小以进行编辑?

    我有一个简单的问题 我花了无数的时间试图解决这个问题 如何更改 Xcode Storyboard 中视图控制器的大小以进行编辑 我有一个大的表格 调查问卷 我想放在我的视图控制器上 但我根本无法使用情节提要给我的当前大小 此外 提供的尺寸
  • Shutil.move IOError:[Errno 2] - 当处于循环中时[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 如果我单独
  • 配置 sbt 项目以在“sbt run”中包含外部 Main 方法

    创建一个依赖于外部 jar 的 sbt 项目对我来说很常见 并且旨在使用外部 jar 中的 Main 方法运行 目前 我只是使用 run main xxx 运行它 但我更希望能够将 Main 方法包含在 sbt 提供的 run 选项列表中
  • Django Forms 视图中的自定义错误消息

    这是我的观点 if request method POST form TeacherRegister request POST Gets school object from email domain email form email va
  • TinyMCE - 外部工具栏位置

    我正在尝试与 TinyMCE 合作创建一个多文本框 点击编辑类型的图形内容编辑器 我已经使用 TinyMCE 来添加和删除它们 定位它们并调整它们的大小 单击以编辑它们等等 但有一件事困扰着我 那就是工具栏 我有一个外部工具栏 我试图将其放
  • 检查元素是否在视图中,如果是,则添加类

    我想堆叠元素 当它们进入视图时 它会添加类 active 我不想删除该类 因此一旦添加它 它就会保留在那里 大概的概念 If default在滚动视图中添加类 active 因此 当您向下滚动时 它会在类进入视图时添加该类 在查看了类似的问
  • 模块化 AngularJS 应用程序:一个或多个 AngularJS 模块?

    我尝试使用 AngularJS 构建一个模块化应用程序 我的第一个想法是使用这种文件夹结构按功能对每个模块进行分组 core controllers js directives js app js modules users control
  • C++ 错误 C2040?

    错误信息 这是什么意思 我该如何解决它 错误 C2040 int 与 const char 2 的间接级别不同 Code include
  • 找不到方法 commandLine()

    我正在尝试将预构建 shell 脚本添加到我的 gradle Android Studio 构建中 我已添加以下内容app build gradle task prePreBuild lt lt commandLine ls preBuil
  • 根据列条件连接数据框行

    为了后续的讨论 我将参考下面的示例数据框 现在 我希望实现的是将所有相似的数据包时间分组 即所有 7s 12s 等 此外 PacketTime字段应包含最小值和最大值的差异 max PacketTime min PacketTime 以及F
  • Fortran90 数组将空白值读取为 null

    我正在读取外部文本文件的数据 30 行 7 列 每行用 分隔 我缺少表示为 的值 当我将数据读入二维数组时 缺失值被 0 00 替换 但数据中也有 0 00 值 当我计算平均值时 计数 项目数 n 显示为计数 缺失值的数量 我如何动态选择缺
  • 调试断言失败

    我不断遇到这种情况 Debug assertions failed 当我在调试模式下运行程序时出错 我尝试在 Visual C 网站上查找此错误 但这些解释对我来说太先进了 而且它们与我对问题的最佳猜测没有任何相似之处 我已经检查了我的代码