c++ - 调试错误 : stack around the variable 'cardDesc' was corrupted

标签 c++ pointers stack

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

void GetVideoCardInfo(int* memoryVar, char* cardName)
{
    strcpy_s(cardName, 128, m_videoCardDescription);
    *memoryVar = m_videoCardMemory;
    return;
}

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;
}

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

最佳答案

您正在将 128 个字符复制到 char cardDesc 中,它仅代表 1 个字符。

您应该将cardDesc 的类型更改为字符数组:

char cardDesc[128];
// ...
m_D3D->GetVideoCardInfo(&cardMem, cardDesc);
//                                ^ no &

关于c++ - 调试错误 : stack around the variable 'cardDesc' was corrupted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53421804/

相关文章:

C++ cin 读取 STDIN

c++ - std::vector no instance of overloaded function matches the argument list

c - 递归树遍历,为树的每个叶子返回一个变量

c - 我不想回到产生中断的那一行

c++ - 如何知道返回地址在栈上的位置c/c++

c++ - 我应该使用哪种 C++ 运算符重载变体?而且,为什么?

c++ - 带空小部件的 Qt 拆分器

c++ - 如何返回列表中指针的值?

c++ - 为什么建议在删除后将指针设置为null?

c - C中堆栈溢出和无限次循环调用的区别