在以下代码段中动态分配了多少字节?

Ada*_*fer 0 c byte dynamic-memory-allocation

假设一个内存地址占用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));
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 5

至少大约35个字节 - 但是malloc的典型实现将具有它支持的一些最小分配大小,所以实际上,你可以期望它使用更多的内存(尽管确切地说会有多少变化).

在典型的情况下,最小分配将是16或甚至32字节,在这种情况下,您在上面指定的大多数大小并没有真正有任何区别 - 最后5个分配都将是最小的是.在典型情况下,大于该值的大小也将向上舍入到下一个2的幂.

这将为您的第一次分配提供32个字节,并为其他五个分配16或32(即,支持的最小大小),总共112或192个字节.