码迷,mamicode.com
首页 > Windows程序 > 详细

Windows has triggered a breakpoint in...... 的问题

时间:2017-03-02 22:21:44      阅读:404      评论:0      收藏:0      [点我收藏+]

标签:corruption   windows   window   

调试代码时遇到类似如下的问题:


Windows has triggered a breakpoint in .exe.
This may be due to a corruption of the heap, which indicates a bug in .exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while .exe has focus.
The output window may have more diagnostic information


看到这样的错误可以断定是堆内存使用错了,可能是申请的堆内存没有释放、内存使用越界或使用了一段已经被销毁的内存。

如下代码:

......

BufferL     buffer;

size_t      buffer_len;

size_t      src_buffer_len = motivation.data_len;

buffer_len = src_buffer_len;

buffer.resize( src_buffer_len  );

SRes ret = LzmaCompress( &buffer[sizeof(xxx)], &buffer_len, &src_buffers[0], src_buffer_len, outProps, &outPropsSize  );


首先给buffer 的size是src_buffer_len 的长度,即为src_buffers的长度。src_buffers压缩后的长度为buffer_len,如果buffer_len > src_buffer_len的话,那么压缩的时候将出现赋值越界的问题,因为接收数据的buffer长度为src_buffer_len。这样就有可能出现 “Windows has triggered a breakpoint ”的问题,可能在赋值越界时不会立即出现此问题,但是这个问题是迟早会出现的。

    所以说,良好的编码习惯很重要。

网上有人推荐pageheap.exe 来检查内存越界的问题。具体请查阅:

http://c.360webcache.com/c?m=fc2dda77b80c762a85d8be5548bf19f1&q=windows+has+triggered+a+breakpoint&u=http%3A%2F%2Fwww.xuebuyuan.com%2F759315.html,


以上,2017.03.02

本文出自 “技术知识梳理” 博客,转载请与作者联系!

Windows has triggered a breakpoint in...... 的问题

标签:corruption   windows   window   

原文地址:http://17030217.blog.51cto.com/2841998/1902724

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!