2015-01-31 61 views
-3

在一個項目上工作時,當我將返回值傳遞給主函數時,它返回錯誤,我無法找到答案,並且在我剛剛退出時返回值的控制檯,但是當輸入返回主時,它會拋出這些錯誤類對象的運行時檢查失敗#2

'poker.exe'(Win32):Loaded'C:可執行程序'。符號加載。

'poker.exe'(Win32):Loaded'C:\ Windows \ SysWOW64 \ ntdll.dll'。找不到或打開PDB文件。

'poker.exe'(Win32):Loaded'C:\ Windows \ SysWOW64 \ kernel32.dll'。找不到或打開PDB文件。

'poker.exe'(Win32):Loaded'C:\ Windows \ SysWOW64 \ KernelBase.dll'。找不到或打開PDB文件。 'poker.exe'(Win32):Loaded'C:\ Windows \ SysWOW64 \ msvcp120d.dll'。找不到或打開PDB文件。

'poker.exe'(Win32):Loaded'C:\ Windows \ SysWOW64 \ msvcr120d.dll'。找不到或打開PDB文件。

運行時檢查失敗#2 - 變量「de」周圍的堆棧已損壞。

程序'[5440] poker.exe'已退出代碼0(0x0)。

它主要是運行時檢查失敗,我不明白,因爲我已被告知PDB文件無關緊要,但我不知道是否應該擔心錯誤,如果我應該如何解決它

因爲代碼很長,我把它調成糊狀斌http://pastebin.com/nrGBVyuj

回答

3

嗯,「損壞記憶」一般是指一個緩衝區溢出,並且你知道什麼,你有一個正確的位置:

class Deck 
{ 
private: 
     int deck[52]; 
     int cardsInDeck = 52; 
public: 
     Deck(){ 
       int nsetUpCounter = 0; 
       cout << "setting up the deck one moment" << endl; 

       while (nsetUpCounter <= 53){ 

         deck[nsetUpCounter] = 1; 

您正在給寫信和deck[53]不存在,搗毀一些其他對象。幸運的是,調試版本吸引了你,所以你可以修復你的錯誤。

+1

像[Application Verifier](https://msdn.microsoft.com/en-us/library/windows/desktop/dd371695.aspx)這樣的工具可以在發生這種情況時發現類似的錯誤。調試CRT稍後報告錯誤。 – IInspectable 2015-01-31 22:51:58

相關問題