→ galic: 先不論對錯 主管這樣考就是預期你面試的時候 講出這篇8成的 12/22 17:19
→ galic: 內容... 可見這種面試多沒有成效 12/22 17:20
→ galic: 我不太能理解為何面試要搞的像震撼教育 然後逼的來面試的人 12/22 17:21
→ galic: 除了被洗臉之外 還要回家上網google 上ptt問解答 12/22 17:21
原先我看到原文以為主管在考不要回傳區域陣列地址這種觀念,但是看描述怎麼覺得主管才是搞不清楚的XDDD
推 Hazukashiine: 我倒是很喜歡這種開放式問答的題目 XD 12/22 17:23
推 mmmmei: 那請問一下該怎麼寫才不會有memory leak 又可以在函數外pr 12/22 17:38
→ mmmmei: int? 12/22 17:38
如樓下所說,建議是malloc一個空間,把你要寫的東西放在malloc出來的空間裏面,因為空間在heap內,所以不
會因為離開function而喪失控制權,malloc出來的空間會喪失控制權就是在你free掉空間的時候,當然如果free完
又去讀寫空間,也會造成安全性問題:info leak和use after free
至於global array的話,如果宣告即給初始值會放在data,沒有的話放在bss,不管放哪個沒有控制權喪失的問題
但是當你不用的話你也不能回收再利用,相較malloc可以把不用的空間free掉,這種使用方式比較......不節約?
推 Hazukashiine: 1. global char[] 2. heap allocation (preferred) 12/22 17:45
→ loveflames: static local 12/22 17:49
※ 編輯: b0920075 (140.117.178.137), 12/22/2017 18:06:58
推 boss0405: 這麼基本的問題如果還不懂很難想像寫出來的code會多可怕 12/22 18:12
→ boss0405: 但可怕的是原PO的主管似乎認為可以這樣用 12/22 18:12
→ boss0405: 不過我也曾經聽過有某公司軟體主管說extern global 12/22 18:14
→ boss0405: variable不要放在header file,然後說出一個錯誤的原因 12/22 18:14
推 CoNsTaR: 如果面試遇到樓上講的那樣的主管該怎麼辦啊 orz 12/23 00:37
→ Schottky: 當然是塊陶,面試官是你以後的同事,有這種雷同事哪行 12/23 02:31
推 mmmmei: 那在c++ 就是char *ptr = new char[5] 這樣嗎? 12/23 14:48
推 steve1012: 在 c++應該會用 string XD 沒事不會砸自己的腳 12/23 15:04
推 mmmmei: 哎呀!單純疑問觀念 現實有STL可以用當然用 12/23 15:35
→ loveflames: 最好加上{} 12/23 17:01
→ NoManInCar: 有個疑問 c++在function new出來的 應該也不能傳出來 12/24 09:46
→ NoManInCar: 吧? 12/24 09:46
→ NoManInCar: 我好像弄錯了 這邊我在想想 12/24 09:47
→ uranusjr: new 和 malloc 在根本上是一樣的概念 12/24 10:01
→ loveflames: 兩個實作或許一樣,不過new是free store,malloc是hea 12/24 10:26
→ loveflames: p 12/24 10:26
推 hakman: 我想要知道為什麼 extern global variable 不要放在header 12/24 23:08
→ hakman: file ,有人可以說明一下嗎? 感恩 12/24 23:08
推 boss0405: 樓上,因為那主管搞錯觀念了,所以這結論也是錯的XD 12/24 23:32
推 Killercat: new傳出來不是不行 只是是不好的寫法 12/28 14:58
→ Killercat: 通常來講new/delete要在同一個scope做,不能A()new了 12/28 14:58
→ Killercat: 傳出來要使用者自己delete 12/28 14:58
→ Killercat: 不然就得wrap一下 比方說C* Alloc() 跟 Release(C*) 12/28 14:59
→ Killercat: C*再用typedef包一下或者拿個warpper class處理一下 12/28 14:59
→ Killercat: btw, shared_ptr好方便的啊..大家都忘了很多原則了XD 12/28 15:00
→ uranusjr: 還是 Rust 大法好, 加上 lifetime 不會有這個問題了 (欸 12/29 03:23