【发布时间】:2020-12-19 01:37:02
【问题描述】:
int main() {
int i = 0, ARRAY_SIZE = 500000;
char **char_array;
char_array = (char **)malloc(ARRAY_SIZE * sizeof(char*));
//physical memory used before loop = M KB
for (i = 0; i < ARRAY_SIZE; i++) {
char_array[i] = (char *)malloc(16 * sizeof(char));
}
//physical memory usage after loop = M+19532 KB
return 0;
}
我有上面的代码。我不明白 19532 KB 的内存使用量是从哪里来的。在我的机器(64 位)中,sizeof(char*) 应该是 8 个字节。对于数组的行初始化,内存是如何使用的?我是 C 的初学者,所以任何帮助将不胜感激。
【问题讨论】:
-
是的,你是对的。 500000 × 8 字节 = 4 兆字节。你是如何测量内存的?
-
通常有一个最小分配大小,如果你请求一个小于最小值的小块,你会得到最小值。
标签: c pointers memory char malloc