我建立一个简单的粒子系统,并希望使用结构的单一阵列缓存来管理我的微粒分配。也就是说,我找不到一个C函数,它允许我从任意缓冲区中获取malloc()和free()。下面是一些伪代码显示我的意图:从缓冲用C
Particle* particles = (Particle*) malloc(sizeof(Particle) * numParticles);
Particle* firstParticle = <buffer_alloc>(particles);
initialize_particle(firstParticle);
// ... Some more stuff
if (firstParticle->life < 0)
<buffer_free>(firstParticle);
// @ program's end
free(particles);
凡<buffer_alloc>
和<buffer_free>
是分配的功能和从任意的指针自由存储器块(可能具有附加的元数据,例如缓冲区长度,等)。这样的功能是否存在和/或有没有更好的方法来做到这一点?谢谢!
你可以为(struct?)粒子添加定义吗?它是否包含指针? – wildplasser
+1。据我所知,C没有做你想做的事。 C++使用* placement new *语法来实现它,这很有趣。然而,没有什么能够阻止你分配一个粒子数组(无论是堆栈还是堆),然后根据需要每次分配一个粒子的存储。 – thb
@thb:我不认为这是一个放置新场景。 OP需要自动内存管理,但要隔离到已定义的内存区域。 –