C++ 内存碎片是否会导致内存不足异常?

C++ 内存碎片是否会导致内存不足异常?,c++,memory-management,out-of-memory,C++,Memory Management,Out Of Memory,内存碎片是否会导致“内存不足异常”,或者程序和系统可以在运行时处理此问题?是的,理论上碎片可能导致内存不足异常。假设您对小对象进行了大量分配,这些小对象大部分都填满了您的内存,然后删除了所有其他对象。这将产生大量的可用内存,但它们都是非常小的块——这是极端的碎片化。如果您试图分配比这些块大的对象,分配将失败 运行时系统通常无法解决此问题,因为在大多数实现中,指针中的地址不能自动更改。因此,无法重新安排分配以整合所有可用空间 良好的堆管理实现就是为了避免这种情况。一种常见的技术是为不同的分配大小使

内存碎片是否会导致“内存不足异常”,或者程序和系统可以在运行时处理此问题?

是的,理论上碎片可能导致内存不足异常。假设您对小对象进行了大量分配,这些小对象大部分都填满了您的内存,然后删除了所有其他对象。这将产生大量的可用内存,但它们都是非常小的块——这是极端的碎片化。如果您试图分配比这些块大的对象,分配将失败

运行时系统通常无法解决此问题,因为在大多数实现中,指针中的地址不能自动更改。因此,无法重新安排分配以整合所有可用空间


良好的堆管理实现就是为了避免这种情况。一种常见的技术是为不同的分配大小使用不同的内存区域。小型分配来自一个地区,中型分配来自另一个地区,大型分配来自他们自己的地区。因此,如果您在小区域中获得大量碎片,则不会对大型分配造成问题。

回答:可能和可能。下一个问题。