C - "malloc"似乎无法正常工作


#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簿记数据,或者谁知道是什么。 只是不要那样做。

相关内容

  • 没有找到相关文章

最新更新