当前位置:  开发笔记 > 编程语言 > 正文

奇怪的临时阵列损坏

如何解决《奇怪的临时阵列损坏》经验,为你挑选了3个好方法。

我试图创建一个排列,当我完成我的问题时,我收到这个奇怪的错误:

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

text作为字符串在for循环之外初始化,当我将temp [1]变为char或int时,我得到相同的错误.该程序工作正常,但我担心为什么我收到此错误,有谁知道为什么?



1> Reed Copsey..:

你只需要使用char temp;和访问它temp = text[i];等.

您正在访问堆栈上一个字节的PAST temp,这是无效的.在这种情况下,由于您只需要一个char,因此根本不需要数组.



2> Simon Hughes..:

temp [1]不存在,你应该做temp [0].或者,像这样:

char temp;
temp = text[i];
text[i] = text[j];
text[j] = temp;

要么

char temp[1];
temp[0] = text[i];
text[i] = text[j];
text[j] = temp[0];



3> cobbal..:

用于temp[0]访问第一个元素

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有