【发布时间】:2013-09-23 22:13:19
【问题描述】:
#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 位
【问题讨论】:
-
未定义。您只是在访问一些随机内存空间并作为整数读取。它不一定会抛出错误,但通常会给你一些奇怪的结果。
标签: c pointers memory-management malloc