我有一个简单的函数,可以将一些数据写入新文件。它可以工作,并且可以写入文件,但是在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所能容纳的字符。
相反,使用
如果您遵循“猜测我的阵列的最大尺寸”
路线,您要做的最后一件事就是尝试数数
到最后一个字符,缓冲区的大小。如果您丢失一个字节,可能会导致崩溃。
关于c++ - 变量周围的堆栈…已损坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25223741/