gpt4 book ai didi

c - 在 GCC 中检测到 Stack Smashing

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:44 25 4
gpt4 key购买 nike

我是 C 的新手,我发现了 gcc 的一个特殊输出,我很难深入了解它。运行应用程序时的错误是:

*** stack smashing detected ***: /home/joshua/Research/cml/test terminated

Program received signal SIGABRT, Aborted.
0x00007ffff7a43428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
54 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.

我对此做了一些研究,这似乎很多时候是由于将太大的值放入数组中引起的,例如;我没有做那样的事。

这是我的示例代码以供引用:

 1 #include <stdio.h>
2 #include <string.h>
3
4 struct student
5 {
6 int id;
7 char name[10];
8 float percentage;
9 };
10
11 int main()
12 {
13 int i;
14 struct student record[2];
15
16 // 1st student's record
17 record[0].id=1;
18 strcpy(record[0].name, "Raju");
19 record[0].percentage = 86.5;
20
21 // 2nd student's record
22 record[1].id=2;
23 strcpy(record[1].name, "Surendren");
24 record[1].percentage = 90.5;
25
26 // 3rd student's record
27 record[2].id=3;
28 strcpy(record[2].name, "Thiyagu");
29 record[2].percentage = 81.5;
30
31 for(i=0; i<3; i++)
32 {
33 printf(" Records of STUDENT : %d \n", i+1);
34 printf(" Id is: %d \n", record[i].id);
35 printf(" Name is: %s \n", record[i].name);
36 printf(" Percentage is: %f\n\n",record[i].percentage);
37 }
38 return 0;
39 }

最佳答案

2

struct student record[2];

不是top index,是元素个数。您似乎知道索引从零开始,这意味着上述数组的有效索引为 01。越界会导致未定义的行为

关于c - 在 GCC 中检测到 Stack Smashing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443277/

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