這裏是我使用的代碼:是malloc()初始化分配數組爲零?
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr;
int sz = 100000;
arr = (int *)malloc(sz * sizeof(int));
int i;
for (i = 0; i < sz; ++i) {
if (arr[i] != 0) {
printf("OK\n");
break;
}
}
free(arr);
return 0;
}
程序不打印OK
。 malloc
不應該將分配的內存初始化爲零。這是爲什麼發生?
內存的內容是* indeterminate *。它可能看起來是隨機的。或者它可能全部爲零。你根本不知道事先。 –
*「程序不打印OK,malloc不應該將分配的內存初始化爲零。」* - 它也不能保證*不是全部爲零。無論哪種方式,通過讀取不確定的值,您的程序具有未定義的行爲。你無法期待任何事情。 – StoryTeller
此外,調試構建可能實際上會導致您分配的內存甚至局部變量被初始化。使內存和指針問題更易於檢測。 –