gpt4 book ai didi

C++ 对象池 : program crashes when using malloc

转载 作者:行者123 更新时间:2023-11-27 23:22:17 26 4
gpt4 key购买 nike

我正在尝试制作一个简单的对象池,但我无法让它工作。使用 malloc 为模板类型的动态数组分配空间时,我的代码崩溃

我的代码:

template <class cl>
class ObjectPool{
public:
gltAtlasRenderer* br;
cl* items;
int SIZE,texid;

void Innit(int size,int texidi)
{
SIZE=size;
items=(cl*)malloc(sizeof(cl)*SIZE);->>>>>>>>>>HERE MY APP CRASHES
/*br=new gltAtlasRenderer(SIZE,false,1);
texid=texidi;
for(int c=0;c<SIZE;c++)items[c].alive=false;
*/
}
void Update(Arena* arena)
{
for(int c=0;c<SIZE;c++)
{
if(!items[c].alive)continue;
items[c].Update(arena);
}
}
void Render()
{
br->RenderStart();
for(int c=0;c<SIZE;c++)
{
if(!items[c].alive)continue;
items[c].Render(br);
}
br->RenderStop(texid);
}
};

我在网上找到的所有示例都使用固定数组和 vector ,但我需要在运行时分配数组。

编辑:这就是我创建它的方式:

ObjectPool<Enemie1>* enemies1;
void Innit()
{
enemies1->Innit(size,texid);
}

我知道那行会崩溃,因为如果我推荐它,它不会崩溃

最佳答案

这行不通:

ObjectPool<Enemie1>* enemies1;
void Innit()
{
enemies1->Innit(size,texid);
}

你需要在使用之前分配内存,像这样:

ObjectPool<Enemie1>* enemies1;
void Innit()
{
enemies1 = new ObjectPool<Enemie1>;
enemies1->Innit(size,texid);
}

关于C++ 对象池 : program crashes when using malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11988261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com