這個錯誤總是被觸發,當我試圖釋放我分配的結構第二次,它不應該,因爲結構設置爲NULL後,我解放它。錯誤:「指針被釋放未被分配」在c
這裏是我的結構與它裏面沒有真正的指針:
typedef struct{
int frame;
double timestamp;
int identifier;
int state;
int unknown1;
int unknown2;
mtVector normalized;
float size;
int unknown3;
float angle;
float majorAxis;
float minorAxis;
mtVector unknown4;
int unknown5[2];
float unknown6;
}Touch;
準系統主要功能:
int main(){
Touch *myTouch = NULL;
int inputCounter = 0;
//whenever a touch is recognized:
...
myTouch = (Touch*)realloc(myTouch,sizeof(Touch)*(inputCounter++));
...
// everything works fine until:
freeTouch(myTouch);
}
void freeTouch(Touch *f){
if(f != NULL){
free(f);
f = NULL;
}
}
任何人有一個想法?
該代碼應該正常工作。你能寫一個[最小的測試用例](http://sscce.org)嗎? – 2012-04-02 10:46:40
你可以展示「第二次」實際發生的情況嗎?所示的代碼只調用'freeTouch()'一次。 – unwind 2012-04-02 10:49:57