奇怪的临时数组损坏
我正在尝试创建一个排列,当我完成问题时,我收到这个奇怪的错误:
Stack around the variable "temp" was corrupted
变量的段位于嵌套的 for 循环内:
for(int i = 0 ; i < str_length ; i++)
{
for(int j = 0 ; j < str_length ; j++)
{
char temp[1];
temp[1] = text[i];
text[i] = text[j];
text[j] = temp[1];
cout << text << endl;
}
}
文本在 for 循环之外作为字符串初始化,并且我收到相同的错误当我将 temp[1] 转换为 char 或 int 时。 该程序运行良好,但我担心为什么会收到此错误,有人知道为什么吗?
I am attempting to create a permutation, and I receive this strange error when I finish my problem:
Stack around the variable "temp" was corrupted
the segment of the variable is within a nested for loop:
for(int i = 0 ; i < str_length ; i++)
{
for(int j = 0 ; j < str_length ; j++)
{
char temp[1];
temp[1] = text[i];
text[i] = text[j];
text[j] = temp[1];
cout << text << endl;
}
}
text is initialized outside of the for loop as a string, and I get the same error when i make temp[1] into a char or an int. The program works fine but I am concern why I am receive this error, does anyone know why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您只需使用
char temp;
并将其访问为temp = text[i];
等。您正在访问堆栈上一个字节 PAST temp 的点,这是无效的。 在本例中,由于您只需要一个字符,因此根本不需要数组。
You just need to use
char temp;
and acces it astemp = text[i];
, etc.You're accessing a point on the stack one byte PAST temp, which is invalid. In this case, since you only want a single char, there's no need for an array at all.
temp[1] 不存在,您应该执行 temp[0]。 或者,像这样:
或者
temp[1] does not exist, you should be doing temp[0]. Or alternatively, like this:
or
使用
temp[0]
访问第一个元素use
temp[0]
to access the first element