Ash*_*gra 2 c memory pointers memory-management dynamic-memory-allocation
我已经研究了所有可能的方法,但是我很难消化malloc ie malloc(sizeof(10))
和calloc都calloc(2,sizeof(5))
分配相同的连续内存这一事实,忽略了calloc初始化为零并且比malloc工作相对慢的其他事实.所以这就是我的想法.
我认为在32位系统上,如果我们调用malloc并说malloc(sizeof(10))
当时malloc将进入堆并分配12个字节的内存,因为对于32位系统,内存包以4个字节为一组排列,以便分配10个在最后一个块中填充2个字节需要3个字节.
类似地,如果我们调用calloc并说calloc(2,sizeof(5))
它将分配2个块,每个块大小为8个字节,总共16个字节,因为由于相同的原因,内存在4个字节的包中,并且分配5个字节,两个4个字节的块是在一个块中使用,将提供3个字节的填充.
所以这就是我对malloc和calloc的看法.我可能是对或错但请告诉我.