【发布时间】:2021-09-02 10:59:37
【问题描述】:
我正在使用 Xcode 在 C 中处理数组的基本内存分配。
这是我的代码:
int *arr; // creating pointer
arr=(int*) malloc(3*sizeof(int)); // allocating memory in heap
printf("%d\n", arr[0]);
printf("%d\n", arr[1]);
printf("%d\n", arr[2]);
int a = 3;
int b = 4;
int c = 5;
arr[0] = a;
arr[1] = b;
arr[2] = c;
printf("%d\n", arr[0]);
printf("%d\n", arr[1]);
printf("%d\n", arr[2]);
我得到的输出是:
0
0
268744246
3
4
5
为什么第三个值初始化为 268744246 而不是像前两个值那样为 0?
【问题讨论】:
-
碰巧。通过
malloc()分配的缓冲区的初始值是不确定的。 -
如果您想要将其初始化为零,请改用
calloc:arr = (int*) calloc(3,sizeof(int)); -
非常感谢
标签: arrays c xcode initialization malloc