[問題] 記憶體位址回傳問題
1.
char* GetMemory() {
char* p = (char *)malloc(100);
return p;
}
void test() {
char *str = NULL;
str = GetMemory();
strcpy(str, "hello world");
printf("%s\n", str);
}
int main(){
test();
}
2.
char* GetMemory() {
char p[] = "hello world";
return p;
}
void test() {
char *str = NULL;
str = GetMemory();
printf(str);
}
int main(){
test();
}
第一段的code會印出"hello world" 但是第二段不會
我的問題是
第二段code的GetMemory內做陣列宣告 不也是會配置記憶體給 p 嗎?
那麼做的事情和第一段code的GetMemory一樣
為什麼不會印出"hello world"
如果第二段code的p會因為function結束而不見的話
為什麼第一段code的p不會消失
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.26.139 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1648134616.A.EFF.html
※ 編輯: Kuba4ma (111.251.26.139 臺灣), 03/24/2022 23:15:19
推
03/25 00:19,
2年前
, 1F
03/25 00:19, 1F
→
03/25 00:23,
2年前
, 2F
03/25 00:23, 2F
→
03/25 00:23,
2年前
, 3F
03/25 00:23, 3F
→
03/25 06:39,
2年前
, 4F
03/25 06:39, 4F
→
03/25 09:04,
2年前
, 5F
03/25 09:04, 5F
推
03/25 09:54,
2年前
, 6F
03/25 09:54, 6F
→
03/25 09:54,
2年前
, 7F
03/25 09:54, 7F
推
03/25 09:59,
2年前
, 8F
03/25 09:59, 8F
→
03/25 10:04,
2年前
, 9F
03/25 10:04, 9F
→
03/25 10:04,
2年前
, 10F
03/25 10:04, 10F
→
03/25 11:25,
2年前
, 11F
03/25 11:25, 11F
推
03/29 06:39,
2年前
, 12F
03/29 06:39, 12F
→
03/29 06:39,
2年前
, 13F
03/29 06:39, 13F
→
03/29 06:39,
2年前
, 14F
03/29 06:39, 14F
噓
03/29 08:57,
2年前
, 15F
03/29 08:57, 15F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章