→ netsphere:2還是LOCAL 3是正確的 01/29 16:53
→ loveme00835:char*tmp = (char*)malloc(10*sizeof(tmp)); 01/29 16:56
→ loveme00835:上面這行語意有點不明0.0 01/29 16:57
→ loveme00835:2)可能是static local, 因為位置沒有變更 01/29 17:05
推 AstralBrain:to 樓上: 2的tmp不是static, 只是普通的local變數 01/29 17:16
→ stellvia7:所以(2)也是不能用的 可能會被其他人佔去memory空間 01/29 17:17
→ stellvia7:只有(3)才是正確可以用的 01/29 17:17
→ stellvia7:感恩謝謝~ 01/29 17:17
推 AstralBrain:2是安全的. 01/29 17:17
→ AstralBrain:回傳"指向local變數的指標"才不安全 01/29 17:18
→ stellvia7:對了在(3)中我後面有一段文字提到關於 access跟 free是 01/29 17:18
→ stellvia7:正確的嗎???? 01/29 17:18
→ stellvia7:還有為什麼(2)在compiler不會給warning?? 01/29 17:19
→ loveme00835:如果是local應該是用stack儲存, 但我用了不同函式去 01/29 17:24
→ stellvia7:哪(2)改成 char abc[10]={'a'.'b','c'}; 01/29 17:24
→ loveme00835:呼叫test(), 得到的位址都一樣 01/29 17:24
→ stellvia7:char *tmp = abc; 01/29 17:24
→ stellvia7:return tmp; 01/29 17:25
→ stellvia7:但就以原來的(2)而言tmp 不是local 變數嗎為什麼合法 01/29 17:25
推 AstralBrain:回傳local變數一直都是合法的 01/29 17:29
→ AstralBrain:int f(){int x=0; return x;} 這x也是local變數喔 01/29 17:30
→ stellvia7:我是說回傳local pointer 之後去access pointer所指向 01/29 17:31
→ stellvia7:的地方是會有問題得 值會不正確? 01/29 17:31
→ loveme00835:原來我們講的東西不一樣 01/29 17:32
→ stellvia7:=.=+ 01/29 17:33
推 AstralBrain:所以說問題在你pointer指向的東西是不是local 01/29 17:34
→ AstralBrain:char tmp[]="abc"; 這個abc在stack裡面 01/29 17:35
→ AstralBrain:char* tmp="abc"; 這個abc在遙遠的外太空 不會被消滅 01/29 17:36
→ stellvia7:為什麼他是在遙遠的外太空? 01/29 17:37
→ stellvia7:他不也是在stack中? 01/29 17:38
→ loveme00835:同樓上 01/29 17:38
→ loveme00835:他可能是static local 或是 global, 隨著程式消長 01/29 17:39
推 AstralBrain:沒有為什麼啊 c語言的設計就是這樣 01/29 17:40
→ stellvia7:就是這裡 為什麼他會變成 static local? or global? 01/29 17:40
→ stellvia7:tmp也是在 test function 內部new出來的怎麼會變成不是 01/29 17:41
→ stellvia7:在stack中 01/29 17:41
→ loveme00835:malloc出來的記憶體是在heap中, 區域變數在stack裡 01/29 17:43
→ netsphere:new出來的都會在heap區 01/29 17:44
→ loveme00835:但有些敘述實際上需要記憶體, 編譯器會自動幫你要 01/29 17:44
→ loveme00835:自動要的記憶體分佈就不太一定了 01/29 17:45
→ stellvia7:所以是compiler自動去要記憶體空間 所以access tmp所指 01/29 17:47
→ stellvia7:向的值 才不會有錯? 01/29 17:47
推 loveme00835:不敢保證⊙⊙ 01/29 18:37
推 VictorTom:推在遙遠的外太空XD AstralBrain大說的是對的, 小弟回 01/30 02:06
→ tomnelson:關於(3):有借有還,再借不難. 01/30 08:44
推 masan22305:有看有推 04/30 22:16