我正在創建簡單的粒子系統。我有兩個typedef結構。首先代表具有一些場的單個粒子。第二個代表粒子系統。我的問題是我無法爲每個Particle分配內存。真的不知道什麼是錯的。 下面是結構:無法釋放指向先前分配的結構的指針
typedef struct {
float m;
float *x;
float *v;
float *f;
float R;
} *Particle;
typedef struct {
Particle *p;
int n;
float t;
} *ParticleSystem;
和這裏代碼分配
ParticleSystem sys = (ParticleSystem) malloc(sizeof(ParticleSystem));
sys->p = (Particle *) malloc(sizeof(Particle)*noOfParticles);
for(int i=0;i<noOfParticles;i++){
sys->p[i] = (Particle)malloc(sizeof(Particle));
sys->p[i]->f = (float*)malloc(sizeof(float)*2);
sys->p[i]->f[0] = 0.0f;
sys->p[i]->f[1] = 0.0f;
...
sys->p[i]->R = radius;
sys->p[i]->m = mass;
}
sys->n=noOfParticles;
sys->t = 0.0f;
和釋放
int n = sys->n;
for(int i=0;i<n;i++){
free(sys->p[i]->f);
...
free(sys->p[i]);//here it breaks
}
free(sys->p);
free(sys);
在線「免費(SYS-> P [I])它打破我。不知道爲什麼,因爲首先我這樣做
sys-> p [i] =(Particle)malloc(sizeof(Particle))來分配Visual Studio中的「HEAP [template.exe]:無效的地址sp ecified到RtlValidateHeap(01E70000,01E749B0) Windows已經引發了template.exe一個斷點。」
C++或C?選一個。 – 2011-04-05 16:19:20
抱歉選擇C和C++。它應該是C. – pchot 2011-04-05 16:38:52