[問題] 記憶體管理策略問題 part 2
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2010
問題(Question):
如果在副函式宣告指標傳回主函式
那是否要free?
如果要free
是要放在哪裡?
程式碼(Code):(請善用置底文網頁, 記得排版)
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
char *fun(int input);
int main(){
printf("a%sb\n",fun(5));
return 0;
}
char *fun(int input){
char *space;
int i;
space = (char *)malloc(sizeof(*space)*input+1); //+1是為了多一位的結束字元
for(i=0;i<input;i++)
*(space+i) = ' ';
*(space+i)='\0';//+1的意義在這
return space;
/*如果return 後就會跳回原來呼叫的函式,那是否該free?
如果不free,那資源是不是就一直被佔住?
有沒有更好的寫法??
*/
}
補充說明(Supplement):
上一篇有發過一次指標的問題,先感謝熱心的網友回答
不過有回答到,誰malloc就誰free,這邊我有咦問
如果是在sub function malloc然後傳回原來的函式
那該怎麼處理?
感覺跟上一篇一樣
但是又不太一樣
所以再發一篇
如果有違反規則
再請版主告知
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.233.66.46
※ 編輯: jacky1989 來自: 118.233.66.46 (03/09 03:59)
→
03/09 04:06, , 1F
03/09 04:06, 1F
這已經是記憶體管理策略了嗎?
所以我是否該改標題?
※ 編輯: jacky1989 來自: 118.233.66.46 (03/09 04:08)
→
03/09 04:11, , 2F
03/09 04:11, 2F
好的
謝謝版主
※ 編輯: jacky1989 來自: 118.233.66.46 (03/09 04:12)
→
03/09 04:12, , 3F
03/09 04:12, 3F
已更正
※ 編輯: jacky1989 來自: 118.233.66.46 (03/09 04:14)
推
03/09 08:30, , 4F
03/09 08:30, 4F
→
03/09 08:31, , 5F
03/09 08:31, 5F
→
03/09 08:31, , 6F
03/09 08:31, 6F
→
03/09 08:32, , 7F
03/09 08:32, 7F
→
03/09 08:32, , 8F
03/09 08:32, 8F
→
03/09 08:33, , 9F
03/09 08:33, 9F
→
03/09 08:33, , 10F
03/09 08:33, 10F
推
03/10 18:45, , 11F
03/10 18:45, 11F
→
03/10 22:44, , 12F
03/10 22:44, 12F