运行时设置内存分配断点

在使用

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

_CrtSetBreakAlloc();

两个函数设置内存分配断点时候经常需要单步进入,然后在监视中为_crtBreakAlloc设置所需中断的分配号

 

@@ 可不知为何,我这里经常无法设置_crtBreakAlloc,显示未定义的符号

 

于是就稍微麻烦点,将分配断点的过程通过读取一个文件完成:

 

 

然后在main函数最开始处添加:

 

 

以后检测到内存泄漏的时候,将运行路径下的debugalloc.cfg文件内容修改为内存分配号就可以避免重新编译,直接命中分配断点。不需要断点时候可以将文件内容改为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,执行二维数组的动态内存删除时出现“已执行断点指令”的错误通常是由于程序访问了内存中不可访问的位置导致的。 出现这种错误的常见原因是程序访问了已被释放或未分配的内存。如果在删除二维数组的内存之前没有正确地释放它们,就会导致这个问题。特别是在使用动态内存分配函数(如malloc、calloc或realloc)为二维数组分配内存之后,必须使用free函数来释放内存。否则,内存将不能正确地被访问。 另一个可能的原因是在释放内存之后继续使用指向该内存的指针,这将导致访问非法内存。在释放内存后,应该将指向该内存的指针置为NULL,以防止意外访问。 如果确认在释放二维数组的内存时没有出现明显的错误,那么错误可能是在删除内存之前的任何其他代码中引入的。这可能是由于在程序其他地方发生了内存越界、指针问题或其他错误。 为了解决这个问题,可以使用调试工具(如GDB)来定位错误所在的代码行。在程序运行时,使用断点进行调试。在程序崩溃并显示“已执行断点指令”时,可以查看程序崩溃时的调用栈以及变量的值,以帮助找到错误所在的位置。在定位到错误代码后,再根据具体情况进行修复。 总而言之,执行二维数组的动态内存删除时出现“已执行断点指令”的错误通常是由于访问了未分配内存或者释放内存后继续使用指针导致的。解决这个问题可以通过确保正确释放内存、避免使用已释放的指针以及调试工具定位错误的代码行来解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值