分配连续的内存,需要提前给数组分配好内存
不需要连续的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;
}