您可能会遇到堆碎片。
如果分配不同大小的内存块,则可能意味着大内存块最终会被分成更小的块并变得不可用。例如:
你分配一个大块(比如1 MB),运行时从操作系统中获取
您
free
大块
你分配一个较小的块和
malloc
从释放的1 MB块中删除
你尝试再次分配一个1 MB的块,但是
free
一个不再足够大,所以运行时从操作系统请求一个新的1 MB块
如果这种情况持续数天,你可能会得到大量免费的0.99 MB块,但运行时仍然需要在每次需要时从操作系统获得一个新的1 MB块。