2011-02-14 30 views
0

全部。當我在基於ONC + SUN RPC的服務器程序的一個過程中使用 static char* result = malloc(1000*sizeof(char)); 。但是這個字符串是應該返回的。免費使用SUN RPC

如果它是靜態的,我認爲沒有必要釋放它。對於每一次,字符串結果將被分配相同的地址,不會導致內存衝突。

對嗎?或者我該怎麼做?這是返回值,如何釋放它? 謝謝

回答

0

如果我理解你的問題,你正在函數調用中使用初始值設定項,返回類型char*。在這種情況下,使用靜態存儲類沒有問題。 result將在程序的整個生命週期中保持其值(您分配的內存地址)。

但是,在這種情況下malloc不會被多次調用。只有第一次通過你的功能。此外,內存仍然分配在堆上,因此完成後仍然需要釋放內存。但是,這個釋放將在你的程序的exit()中執行,所以可以忽略。

+1

雖然你說的正確的是內存將在你的應用程序結束時被操作系統自動回收,但這對於開始關於內存管理的「懶惰」從來都不是一個爭論。如果您分配內存,請始終在您的應用程序的某個位置釋放內存,即使這意味着它處於退出狀態。 – Patrick