假设一个内存地址占4个字节,一个char占1个字节:
char** t;
t = malloc(5 * sizeof(char*));
int i;
for (i = 0; i < 5; i++)
t[i] = malloc(sizeof(char) * (i+1));
最佳答案
至少大约 35 字节——但是 malloc 的典型实现将具有它支持的一些最小分配大小,因此实际上,您可以预期它使用的内存比这更多(尽管具体多少会有所不同)。
在典型情况下,最小分配大约为 16 甚至 32 字节,在这种情况下,您在上面指定的大部分大小实际上没有任何区别——最后 5 个分配将全部是最小值恰好是。在典型情况下,大于该值的尺寸也将四舍五入为 2 的下一个幂。
这将为您的第一个分配分配 32 个字节,为其他五个分配分配 16 个或 32 个字节(即支持的最小大小),总共 112 个或 192 个字节。
关于c - 以下代码段中动态分配了多少字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840598/