[問題] 關於return local pointer的問題
關於return local pointer的問題
(1)
char* test()
{
char tmp[30]="abc";
return tmp;
}
int main()
{
printf("%s\n",test());
}
上述由於tmp是local 變數會在test function結束後記憶體空間可能就被他人佔用所以不
安全
ps.compiler 會給warning
(2)
char* test()
{
char*tmp = "abc";
return tmp;
}
int main()
{
printf("%s\n",test());
}
那這樣tmp 就不算是local 變數了嗎? 這樣是正確的嗎?
ps.compiler 不會給warning
(3)
char* test()
{
char*tmp = (char*)malloc(10*sizeof(tmp));
sprintf(tmp,"%s","abc");
return tmp;
}
int main()
{
char *p_tmp;
p_tmp = test();
printf("%s\n",p_tmp );
free(p_tmp)
}
那再請問這個 這邊free是必要的嗎
上面malloc 是在heap中要求 memory space 而不是在stack中 所以除非我自己去
free掉記憶體 不然整支程式不論怎麼跑 我在任何的時間access p_tmp的空間都是合法的
且值是正確的?
感恩各位~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.36.18
→
01/29 16:53, , 1F
01/29 16:53, 1F
→
01/29 16:56, , 2F
01/29 16:56, 2F
→
01/29 16:57, , 3F
01/29 16:57, 3F
→
01/29 17:05, , 4F
01/29 17:05, 4F
推
01/29 17:16, , 5F
01/29 17:16, 5F
→
01/29 17:17, , 6F
01/29 17:17, 6F
→
01/29 17:17, , 7F
01/29 17:17, 7F
→
01/29 17:17, , 8F
01/29 17:17, 8F
推
01/29 17:17, , 9F
01/29 17:17, 9F
→
01/29 17:18, , 10F
01/29 17:18, 10F
→
01/29 17:18, , 11F
01/29 17:18, 11F
→
01/29 17:18, , 12F
01/29 17:18, 12F
→
01/29 17:19, , 13F
01/29 17:19, 13F
→
01/29 17:24, , 14F
01/29 17:24, 14F
→
01/29 17:24, , 15F
01/29 17:24, 15F
→
01/29 17:24, , 16F
01/29 17:24, 16F
→
01/29 17:24, , 17F
01/29 17:24, 17F
→
01/29 17:25, , 18F
01/29 17:25, 18F
→
01/29 17:25, , 19F
01/29 17:25, 19F
推
01/29 17:29, , 20F
01/29 17:29, 20F
→
01/29 17:30, , 21F
01/29 17:30, 21F
→
01/29 17:31, , 22F
01/29 17:31, 22F
→
01/29 17:31, , 23F
01/29 17:31, 23F
→
01/29 17:32, , 24F
01/29 17:32, 24F
→
01/29 17:33, , 25F
01/29 17:33, 25F
推
01/29 17:34, , 26F
01/29 17:34, 26F
→
01/29 17:35, , 27F
01/29 17:35, 27F
→
01/29 17:36, , 28F
01/29 17:36, 28F
→
01/29 17:37, , 29F
01/29 17:37, 29F
→
01/29 17:38, , 30F
01/29 17:38, 30F
→
01/29 17:38, , 31F
01/29 17:38, 31F
→
01/29 17:39, , 32F
01/29 17:39, 32F
推
01/29 17:40, , 33F
01/29 17:40, 33F
→
01/29 17:40, , 34F
01/29 17:40, 34F
→
01/29 17:41, , 35F
01/29 17:41, 35F
→
01/29 17:41, , 36F
01/29 17:41, 36F
→
01/29 17:43, , 37F
01/29 17:43, 37F
→
01/29 17:44, , 38F
01/29 17:44, 38F
→
01/29 17:44, , 39F
01/29 17:44, 39F
→
01/29 17:45, , 40F
01/29 17:45, 40F
→
01/29 17:47, , 41F
01/29 17:47, 41F
→
01/29 17:47, , 42F
01/29 17:47, 42F
推
01/29 18:37, , 43F
01/29 18:37, 43F
推
01/30 02:06, , 44F
01/30 02:06, 44F
→
01/30 02:07, , 45F
01/30 02:07, 45F
→
01/30 08:44, , 46F
01/30 08:44, 46F
推
04/30 22:16, , 47F
04/30 22:16, 47F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):