调试错误:变量'cardDesc'周围的堆栈已损坏

Max*_*Max 0 c++ stack pointers

标题.我正在使用的功能是这样的:

void GetVideoCardInfo(int* memoryVar, char* cardName)
{
    strcpy_s(cardName, 128, m_videoCardDescription);
    *memoryVar = m_videoCardMemory;
    return;
}
Run Code Online (Sandbox Code Playgroud)

m_videoCardDescription是一个'128个字符长的'字符数组,其中包含我的视频卡的描述.这是我调用函数的地方:

bool writeGPUnameDesc() {
    char cardDesc;
    int cardMem;
    m_D3D->GetVideoCardInfo(&cardMem, &cardDesc);

    std::ofstream myfile;
    myfile.open("gpuNameAndDesc.txt");
    myfile << "Graphics card name: " << cardDesc;
    myfile << " - Graphics card memory: " << cardMem;
    myfile.close();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,会弹出一个消息框,显示运行时检查失败#2和标题.如果有人可以提前帮助谢谢.

Mar*_*cký 5

您正在复制128个字符char cardDesc,仅代表1个字符.

您应该将类​​型更改cardDesc为char数组:

char cardDesc[128];
// ...
m_D3D->GetVideoCardInfo(&cardMem, cardDesc);
//                                ^ no &
Run Code Online (Sandbox Code Playgroud)