Windows has triggered a breakpoint in...... 的問題

來源:互聯網
上載者:User

標籤: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...... 的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.