正在阅读一些文本并尝试在 C 中写入超过数组的大小,即缓冲区溢出。文本表明,每当您尝试写出array[5]
数组长度为 5 时,就会出现分段错误,但使用下面的代码时我似乎没有得到。代码实际运行。
#include <stdio.h>
#include <string.h>
int main ()
{
int i;
int array[5] = {1, 2, 3, 4, 5};
for (i = 0; i <= 255; i++)
{
array[i] = 10;
}
int len = sizeof(array) / sizeof(int);
printf("%d\n", len);
printf("%d\n", array[254]);
}
在执行最后一条语句时,将10
打印 a。我想知道这是否是一个漏洞,或者我是否缺少某些东西。我在 macbook pro 上运行 iterm2 的代码。