malloc一定要free嗎 為什么malloc()和free()函數(shù)會產(chǎn)生很多內(nèi)存碎片?
為什么malloc()和free()函數(shù)會產(chǎn)生很多內(nèi)存碎片?首先,碎片分為內(nèi)部碎片和外部碎片。內(nèi)部碎片是指malloc函數(shù)在塊內(nèi)部生成的信息,用于記錄當(dāng)前分配的塊在實(shí)現(xiàn)時的信息。因此,malloc之后
為什么malloc()和free()函數(shù)會產(chǎn)生很多內(nèi)存碎片?
首先,碎片分為內(nèi)部碎片和外部碎片。內(nèi)部碎片是指malloc函數(shù)在塊內(nèi)部生成的信息,用于記錄當(dāng)前分配的塊在實(shí)現(xiàn)時的信息。因此,malloc之后實(shí)際占用的內(nèi)存大小通常大于所需大?。ㄟ@也與內(nèi)存對齊有一定關(guān)系)。外部碎片是我在樓上說的。重復(fù)使用后,會在堆中產(chǎn)生不連續(xù)的可用內(nèi)存塊,即外部碎片。如果需要,我可以提供一個源代碼來模擬malloc進(jìn)程