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

时间:2013-09-23 22:13:19

标签: c pointers memory-management 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%d\n", arr[0], arr[1]);
   system("PAUSE");
   return 0;
}

为什么它会返回42? malloc大小不是只有一个整数可用于存储? (当我尝试arr [1]不是它应该抛出错误?)

我正在使用Win7 32位

2 个答案:

答案 0 :(得分:2)

  

当我尝试arr [1]不是它应该通过错误

不得,但可能。这就是C中未定义行为的美妙,没有人知道会发生什么。

答案 1 :(得分:0)

您的程序会导致未定义的行为,因此可能会发生任何,包括正确行为的出现。你只是覆盖你请求的内存的末尾。之后,所有赌注都已关闭。您可能没有覆盖任何内容,或者可能是一些malloc簿记数据,或者谁知道什么。只是不要这样做。