<分区>
我是 C 的初学者,我正在尝试通过做一些简单的练习来更加熟悉数组和手动内存分配的概念。我一直在阅读有关“中止陷阱:6”错误的所有(许多)问题,尽管我学到了很多东西,但它们并没有解决我的问题。
我检查过的类似线程包括:
"Abort trap: 6" running C program on a Mac
...等等,都与我正在处理的略有不同。
问题似乎是我正在写入我无权访问的内存,但我认为通过在声明数组时使数组足够大,我可以避免这个问题。显然我错了!
代码应该简单地创建一个包含 100 个整数(位置 0 到 99)的数组,并为每个整数分配其位置的值(即数组中的第一项应为整数 0,最后一项应为整数应该是 int 99)。当我运行这段代码时,我得到了预期的所有示例 printf 语句——其中包含正确的值——但后面跟着一行“Abort trap: 6”。
有人可以看一下我的代码并告诉我我做错了什么导致了这个错误吗?
#include <stdio.h>
int main(void)
{
int obvs[101];
for (int i = 0; i < sizeof(obvs); i++)
{
obvs[i] = i;
}
printf("obvs[9] = %i\n", obvs[9]);
printf("obvs[13] = %i\n", obvs[13]);
printf("obvs[37] = %i\n", obvs[37]);
printf("obvs[74] = %i\n", obvs[74]);
printf("obvs[99] = %i\n", obvs[99]);
return 0;
}