malloc一定要free吗 为什么malloc()和free()函数会产生很多内存碎片?

为什么malloc()和free()函数会产生很多内存碎片?首先,碎片分为内部碎片和外部碎片。内部碎片是指malloc函数在块内部生成的信息,用于记录当前分配的块在实现时的信息。因此,malloc之后

为什么malloc()和free()函数会产生很多内存碎片?

首先,碎片分为内部碎片和外部碎片。内部碎片是指malloc函数在块内部生成的信息,用于记录当前分配的块在实现时的信息。因此,malloc之后实际占用的内存大小通常大于所需大小(这也与内存对齐有一定关系)。外部碎片是我在楼上说的。重复使用后,会在堆中产生不连续的可用内存块,即外部碎片。如果需要,我可以提供一个源代码来模拟malloc进程