日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HEAP: Free Heap block XXXX modified at XXXX after it was freed

發布時間:2025/6/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HEAP: Free Heap block XXXX modified at XXXX after it was freed 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發過程中,有時候會遇到堆異常的情況
這時,VS的調試輸出窗口會提示:
HEAP[MemTest.exe]: HEAP: Free Heap block 39b998 modified at 39b9c0 after it was freed
Windows has triggered a breakpoint in MemTest.exe.

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

This may also be due to the user pressing F12 while MemTest.exe has focus.

The output window may have more diagnostic information.

就是說已經釋放的堆內存被修改了,一般就是new/malloc 后的內存,在被delete/free后又被使用了
一個簡單例子

#include "stdafx.h" #include <stdlib.h> #include <string.h> void test(void); void testStruct(void); void tt(void); struct tagTest { int a; int b; }; int _tmain(int argc, _TCHAR* argv[]) { testStruct(); test(); system("pause"); return 0; } void test(void) { char* pBuffer = new char[128]; strcpy(pBuffer, "hello"); printf("%p %s\n", pBuffer, pBuffer); delete[] pBuffer; strcpy(pBuffer, "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"); printf("%p %s\n", pBuffer, pBuffer); tt(); } void tt(void) { printf("I do nothing\n"); } void testStruct(void) { tagTest* pTest = new tagTest(); pTest->a = 0x11111111; pTest->b = 0x22222222; printf("%p %d, %d\n", pTest, pTest->a, pTest->b); delete pTest; pTest->a = 0x33333333; pTest->b = 0x44444444; printf("%p %d, %d\n", pTest, pTest->a, pTest->b); tt(); }
VC2008編譯運行以上程序(DEBUG模式),發現運行到void test(void)函數的new那條語句時程序報錯
不過這個new是不應該報此錯誤的,頂多報個內存不足就夠了......郁悶啊,后來發現,對內存被釋放后再使用是不會立即報錯的,等到再次使用堆操作函數時才會報錯。
也就是說,當時的調用堆棧是不準確的,那定位真正出問題的地方才是關鍵。
在MSDN論壇上有人說可以觀察memory窗口,根據內存內容推測問題。運氣好的話在報錯的內存地址處可以看出來蛛絲馬跡(比如說上面的實驗程序),運氣不好就只好把申請的內存和使用的地方全部打印。
Free Heap block AAAA modified at BBBB after it was freed在這句提示里,block AAAA 不是平時申請地址后的返回值,一般都比我們申請的小一些,在VC2008 DEBUG的模式下這個值比申請出來的小40(0x28)的字節, 地址 BBBB 應該總是不小于 AAAA。

這種問題不好調試,貌似網上也沒什么有效的方法,

參考:
內存窗口的使用(http://social.msdn.microsoft.com/Forums/hu-HU/vclanguage/thread/01bae812-0a5f-4b17-9745-b1c8293a25b1)
再次申請或退出時報錯(http://hi.baidu.com/lcs0000824/blog/item/9e77e4a58ef2e1ff9152ee7e.html/cmtid/783c8809d62fc19e0a7b8211)
此時堆棧不準確(http://www.davekb.com/browse_programming_tips:free_heap_block_modified_after_it_was_freed:txt)

轉載于:https://www.cnblogs.com/xkxjy/archive/2011/02/28/2078096.html

總結

以上是生活随笔為你收集整理的HEAP: Free Heap block XXXX modified at XXXX after it was freed的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产成人在线观看 | 日韩精品视频在线看 | 一级特黄aa大片免费播放 | 最新亚洲精品 | 丰满岳跪趴高撅肥臀尤物在线观看 | 国产中文在线视频 | 成人天堂噜噜噜 | 亚洲国产精品二区 | 射精一区二区 | 男女国产精品 | 亚洲两性视频 | av色片| www.亚洲天堂.com | 日韩一区二区三区不卡视频 | 亚洲AV蜜桃永久无码精品性色 | 成人免费福利 | 全肉的吸乳文 | 91精品免费视频 | 男ji大巴进入女人视频 | 国产成人综合在线视频 | 男人日女人在线观看 | 噼里啪啦动漫高清在线观看 | 我爱52av| www中文字幕在线观看 | 久久91视频 | 中文字幕超碰在线 | 麻豆传媒在线免费 | 亚洲第一国产视频 | 二级黄色录像 | 乱熟女高潮一区二区在线 | 91精品在线看 | 日本少妇久久久 | 午夜小电影| 亚洲妇女体内精汇编 | 小草av在线 | 激情五月五月婷婷 | 欧美日韩黄色大片 | 麻豆日产六区 | 久久精品黄aa片一区二区三区 | 国产成人一区二区三区免费看 | 精品成人中文无码专区 | 中文字幕在线观看一区 | 亚洲欧美乱综合图片区小说区 | 麻豆91在线 | 久久亚洲视频 | 久久久免费 | 激情欧美一区二区三区精品 | 精品久久久久久中文字幕 | 特级免费毛片 | 免费成人一级片 | 欧美卡一卡二卡三 | 久在线播放| 国产伦精品一区二区三区四区免费 | 久久精品无码专区 | 精品一区二区久久 | 日韩v| 美脚の诱脚舐め脚视频播放 | 日本三级黄色录像 | 17c在线视频 | 少妇姐姐 | 中午字幕在线观看 | 色爱av | 国产视频久久久久久久 | 日本午夜三级 | 222aaa| 女色综合 | 日韩免费在线观看视频 | www.蜜桃av | 俺来也av| 亚洲视频一区二区三区四区 | 国产精品久久久久一区二区三区 | 国产理论视频在线观看 | 在线免费视频一区二区 | 亚洲高清在线视频 | 欧美少妇xxx | 国模精品一区二区三区 | 色噜噜在线观看 | 成人免费毛片色戒 | 国产理论影院 | juliaannxxxxx高清 黄页网站在线播放 | 色婷婷aⅴ一区二区三区 | 国产福利影院 | 丝袜脚交免费网站xx | 午夜激情四射 | 福利色播| 精品人妻无码一区二区 | 欧美乱妇日本无乱码特黄大片 | 哪里可以免费看av | 97色吧 | 色天使在线视频 | 天堂激情网 | 新国产视频 | 国产乱码77777777 | 亚洲男人的天堂av | 美国一级黄色大片 | 亚洲激情视频在线 | 黄色大片免费在线观看 | 男人的天堂在线视频 | 麻豆成人在线观看 |