2015-01-31 48 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

相关问题