gpt4 book ai didi

c++ - 变量周围的堆栈...已损坏

转载 作者:IT老高 更新时间:2023-10-28 22:35:43 26 4
gpt4 key购买 nike

我有一个将一些数据写入新文件的简单函数。它可以工作,并且文件已写入,但在 MSVS Express 2013 中调试时出现上述错误。

void writeSpecToFile(const char *fname); //in header file.

char myChar [20];
sprintf(myChar, "aa%03daa%daa", i1, i2);
const char* new_char = myChar;
writeSpecToFile(myChar);

正如所见,我只是使用 sprintf 将一些变量插入到字符串中(工作正常)。现在无论我通过 myChar 还是 new_char,它仍然给我腐败错误。

出了什么问题?

最佳答案

为什么你声明你的字符缓冲区大小为 20? sprintf 放置的字符很可能超出了 myChar 的容量。

改为使用

  1. 更安全的构造,例如 std::ostringstream 或
  2. 至少,声明你的 char 数组比你预期的要大得多(不是最好的方法,但至少不会发生错误)。

如果您按照“猜猜我的数组的最大尺寸” 路线,您最不想做的就是尝试数数,向下 到最后一个字符,缓冲区有多大。如果你偏离了一个字节,那可能会导致崩溃。

关于c++ - 变量周围的堆栈...已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com