分配连续的内存,需要提前给数组分配好内存
不需要连续的new和delete ,容易产生内存碎片,导致内存泄漏
做服务器的话这个量会被扩大
FObject* p_m = new FObject(); //动态内存->内存碎片
红色是其他程序占了,蓝色是new的

红色被干掉,蓝色分配内存不能弥补,导致内存泄漏

FObject* p_m = new FObject[1024]; //预分配内存,一直占着这个内存,不会产出内存碎片
分配连续的内存完整代码
#include <iostream>
struct FObject
{
private:
int a;
int b;
};
template<class T>
class FPreDistribution
{
public:
FPreDistribution(int InCount)
:Number(InCount)
{
Data = new T[InCount];
}
~FPreDistribution()
{
delete[] Data;
}
T* operator[](int Index)
{
return &Data[Index];
}
inline int Num() { return Number; }
private:
T* Data;
int Number;
};
int main()
{
FObject* p_m = new FObject();//动态内存
FObject* p_mv = new FObject[1024];//预分配内存
FPreDistribution<FObject> PreDistribution(1024);
FObject *Hello = PreDistribution[56];
return 0;
}
本文探讨了内存管理中预分配内存的重要性,对比了动态分配内存可能导致的内存碎片问题。通过使用自定义类`FPreDistribution`预分配固定大小的内存块,可以有效避免内存碎片并减少内存泄漏的风险。
1138

被折叠的 条评论
为什么被折叠?



