正在阅读一些文本并试图在 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
。我想知道这是否是一个漏洞,或者我是否遗漏了什么。我在 macbook pro 上运行 iterm2 的代码。
最佳答案
写到最后是未定义的行为——任何事情都可能发生。
关于c - 此缓冲区溢出是否适用于 Mac OSX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11058441/