2016-02-25 86 views
-2
typedef struct { 
int s; 
... 
char* temp_status; 
... 
} param; 

pararm MQK; 
MQK.temp_status = (char*) malloc(sizeof(char)*14); 

... 

free(&(MQK.temp_status)); <<< ERROR 

錯誤報告如何釋放堆棧分配struct的malloc'd屬性?

gcc ... 
csim.c: In function ‘main’: 
csim.c:348:9: error: attempt to free a non-heap object ‘MQK’ [- Werror=free-nonheap-object] 
free(&(MQK.temp_status)); 
    ^
cc1: all warnings being treated as errors 

我應該如何釋放呢?我必須free() a malloc() d屬性的堆棧分配結構。

+2

釋放指針,而不是它的地址。即,刪除'&'。你想釋放相同的指針返回我的'malloc',而不是包含該指針的變量的地址。 –

+2

是您的大寫鎖定鍵損壞? – Jeff

回答

3

MQK.temp_status是一個字符指針。你malloc它,你可以釋放它

free(MQK.temp_status); 

我應該的權利。

每個指針都有一個地址。並且你不能釋放該地址&MQK.temp_status