我的目標是反覆運行API調用並檢查內存泄漏。
API接受整型輸入並返回一個指向結構鏈表中第一個結構的指針作爲輸出。每個結構可能有其他類型的結構變量。
在下面的代碼中,我試圖表示我的問題。
使用函數作用域到期來釋放結構鏈表的內存
問題出在callApi()函數中。我需要處理由API()返回的結構「輸出」佔用的內存。即使我在這裏使用空閒(輸出),它也會導致內存泄漏,因爲它指向嵌套結構的鏈表。 (信息來源:http://en.wikibooks.org/wiki/C_Programming/Memory_management)
問題:當控制熄滅功能的恢復主要 當離開退出callApi()調用,將在「輸出」嵌套結構到期()?它會釋放整個內存嗎?
請建議解決方法來解決這個內存泄漏問題。
Can this problem be overcome with C++?
typedef struct{
int dev_size;
char *dev_name;
dev_stat *next_dev;
mem_stat *mem_info;
} dev_stat
typedef struct{
int mem_capacity;
char *mem_name;
} mem_stat
int main()
{
int input;
int return_val;
int callApi(int);
while(1)
{
return_val=callApi(input);
print return_val;
}
}
int callApi(int ip)
{
//Update: Memory allocation is unnecessary as it is done inside the API() call itself
//dev_stat *output=(dev_stat *)calloc(2,sizeof(dev_stat));
int ret_val;
ret_val=API(ip,&output);
free(output);
output=NULL;
return ret_val;
}
什麼是'int callApi(int);'在你的主要做? – Muggen 2010-12-02 12:56:32
該程序僅用於給出程序流程的總體思路。它不是確切的C語法。使用callApi()的原因:如果我在main()中調用API(),那麼在程序結束之前,所使用的變量將永遠不會超出範圍。因此,在main() – 2010-12-02 13:08:03