[問題] struct 初始化 return struct 好還是 struct pointer好
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
問題(Question):
在C語言中想要達到類似C++中constructor 初始化的功能,
則此function回傳時是直接回傳 struct 好,
還是在 function 中 malloc 後回傳 struct pointer 好。
程式碼(Code):(請善用置底文網頁, 記得排版)
https://gist.github.com/914730
補充說明(Supplement):
如上面程式碼,兩者皆可以達成我想要的目的,
除了兩者所分配到的記憶體位置會在不同的區塊(Stack和Heap)。
我的想法是 struct s b = getStruct(); 會產生兩個 struct,
在 getStruct() return 時會將內部的 struct 內容複製給 b。
而 struct s* c = getStructPointer(); 則是 malloc 一塊記憶體,
透過 pointer 的複製使 struct s* c 也能取用到 malloc 的記憶體內容。
請問以上的想法是否正確呢?
不太確定是不是有回傳區域變數的問題存在。(若有概念上的錯誤請大家指正)
若正確在話除了記憶體位置的差別和malloc版本需要自己free外,
二者的寫法是否有哪一種比較好?還是看個人習慣即可?
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.107.58
推
04/12 09:41, , 1F
04/12 09:41, 1F
→
04/12 09:41, , 2F
04/12 09:41, 2F
→
04/12 09:41, , 3F
04/12 09:41, 3F
→
04/12 09:42, , 4F
04/12 09:42, 4F
→
04/12 09:42, , 5F
04/12 09:42, 5F
→
04/12 09:43, , 6F
04/12 09:43, 6F
→
04/12 09:43, , 7F
04/12 09:43, 7F
→
04/12 11:07, , 8F
04/12 11:07, 8F
→
04/12 11:08, , 9F
04/12 11:08, 9F
→
04/12 11:08, , 10F
04/12 11:08, 10F
→
04/12 11:09, , 11F
04/12 11:09, 11F
→
04/12 11:16, , 12F
04/12 11:16, 12F
推
04/13 22:53, , 13F
04/13 22:53, 13F
→
04/13 22:56, , 14F
04/13 22:56, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章