我有一個函數分配字符串並返回它的指針。當我在其他功能的調用中直接使用它時,是否需要釋放內存?C - 釋放內存分配功能
例如:
char *getRow(){
char *someString = (char*) malloc(sizeof(char) * 10);
strcpy(someString , "asdqwezxc");
return someString;
}
int main(){
printf("%s", getRow());
}
在該函數分配的內存會發生什麼?有什麼方法可以釋放它,或者在使用它之前是否需要將它存儲到某個變量中?
這正式泄漏了分配的內存。在*這個*代碼中,這並不重要,因爲此後程序立即結束,但這不是一個好習慣。 – dmckee
這是不好的做法,最好將指針作爲參考傳遞,這樣就可以像函數一樣在函數外部分配和釋放字符串。 –
如果分配大小總是像本例中一樣是靜態的,那麼您始終可以使用您傳遞的固定大小的緩衝區作爲參數來獲取行。就像一個charbuf [10]; getRow(buf);'雖然有限的情況可以應用,但是您必須非常關注getRow的調用合約。 (換句話說,除非你有更多的限制,否則對於任何複雜的東西來說可能是個壞主意。) – Corbin