类对象的运行时检查失败 #2

run-time check failure #2 for class object

本文关键字:失败 检查 运行时 对象      更新时间:2023-10-16

处理一个项目,当我将返回值传递给 main 函数时,它返回的错误我也找不到答案,当我退出控制台时它返回值,但是当输入返回 main 时,它会抛出这些错误

'poker.exe' (Win32):加载了'C:\Users\Daniel\Documents\Visual Studio 2013\Projects\Project4\Debug\poker.exe'。已加载符号。

'poker.exe' (Win32): 已加载 'C:\Windows\SysWOW64tdll.dll'。找不到或打开 PDB 文件。

'poker.exe' (Win32): 已加载 'C:\Windows\SysWOW64\kernel32.dll'。找不到或打开 PDB 文件。

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

'poker.exe' (Win32): 已加载 'C:\Windows\SysWOW64\msvcr120d.dll'。找不到或打开 PDB 文件。

运行时检查失败 #2 - 变量"de"周围的堆栈已损坏。

程序 '[5440] 扑克.exe' 已退出,代码为 0 (0x0)。

主要是我不明白的运行时检查失败,因为我被告知 PDB 文件无关紧要,但我不知道我是否应该担心错误以及我是否应该如何修复它

由于代码很长,我将其放入粘贴箱 http://pastebin.com/nrGBVyuj

好吧,"损坏的内存"通常意味着缓冲区溢出,你知道什么,你在这里有一个:

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[52]deck[53],丢弃其他对象。 幸运的是,调试版本抓住了你,所以你可以修复你的错误。