#include <stdio.h>
#include <string.h>
int main()
{
int *arr = NULL;
arr = (int *) malloc(1*sizeof(int));
arr[0] = 4;
arr[1] = 2;
printf("%d%dn", arr[0], arr[1]);
system("PAUSE");
return 0;
}
为什么它返回 42? malloc
大小不是只使一个整数可用于
存储吗?(当我尝试arr[1]时,它不应该抛出错误吗?
我正在使用 Win7 32 位
当我尝试到达[1]时,它不应该通过错误吗
它不必,但它可能。这就是 C 语言中未定义行为的美妙之处,不知道会发生什么。
您的程序会导致未定义的行为,因此任何事情都可能发生,包括出现正确的行为。 您只是覆盖了您请求的内存的末尾。 在那之后,所有的赌注都关闭了。 您可能没有覆盖任何内容,或者可能malloc
簿记数据,或者谁知道是什么。 只是不要那样做。