1. 程式人生 > >VS2013 堆棧溢出調查(0xC00000FD: Stack overflow)

VS2013 堆棧溢出調查(0xC00000FD: Stack overflow)

技術 棧大小 所在 過程 appid 數據 網上 microsoft app

在調試一個代碼時,執行過程中會出現如下錯誤(0xC00000FD: Stack overflow)。

技術分享圖片

很明顯是堆棧溢出了。

網上很多方法,都是通過修改設置工程配置,把堆棧調大一些,如下圖。

技術分享圖片

但是堆棧到底使用了多少,在哪裏溢出的,並不清楚。

其實在VS2013裏面有一個代碼分析工具,可以很方便地幫助定位堆棧問題。

首先,打開從菜單-->VIEW--> Other Windows --> Code Analysis 打開代碼分析窗口。

其次,在Code Analysis 窗口裏,選擇需要分析的項目。

技術分享圖片

分析結果裏面會顯示代碼存在堆棧溢出警告,也給出了建議,可以移一些數據到堆空間。

技術分享圖片

雙擊警告,可以定位到錯誤所在代碼。

技術分享圖片

檢查後發現這個函數第49行定義了一個變量buff,大小為1M,加上其他變量,肯定超過了1M(默認的棧大小)。

改成 char *buff = (char*)malloc(1024*1024); 就不會有這個問題。

或者也可以直接修改工程屬性,增加棧空間。

※ 關於C6262的說明參考官方文檔。

https://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k(C6262)&rd=true

VS2013 堆棧溢出調查(0xC00000FD: Stack overflow)