<分区>
在下面的代码中,我可以将 malloc 的参数更改为任何值(至少是我尝试过的值),一切看起来都很好。
例如,我可以将“3 * sizeof(float)”更改为“3 * sizeof(char)”,甚至可以更改为零。而且我仍然可以获得“正确”的结果。堆大小似乎根本不重要。
这让我很困惑。怎么会这样?
代码在 Xcode 5 中编写和运行。
float *favorites = malloc(3 * sizeof(float));
favorites[0] = 3.14158;
favorites[1] = 2.71828;
favorites[2] = 1.41421;
for (int i = 0; i < 3; i++) {
printf("%.4f is favorite %d\n", favorites[i], i);
}
free(favorites);
favorites = NULL;