奇怪的临时数组损坏

发布于 2024-07-15 06:15:33 字数 516 浏览 11 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苦妄 2024-07-22 06:15:34

您只需使用 char temp; 并将其访问为 temp = text[i]; 等。

您正在访问堆栈上一个字节 PAST temp 的点,这是无效的。 在本例中,由于您只需要一个字符,因此根本不需要数组。

You just need to use char temp; and acces it as temp = 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.

小梨窩很甜 2024-07-22 06:15:34

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

temp[1] does not exist, you should be doing temp[0]. Or alternatively, like this:

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

or

char temp[1];
temp[0] = text[i];
text[i] = text[j];
text[j] = temp[0];
ヅ她的身影、若隐若现 2024-07-22 06:15:34

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

use temp[0] to access the first element

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文