[問題] 如何傳出區域中的 malloc 空間?

看板C_and_CPP (C/C++)作者 (Rex)時間16年前 (2009/07/09 19:14), 編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/1
由於要實作一種資料結構,需要動態配置記憶體空間, 而這個動作想要放在一個函數裡處理,而且只有在此函數的運作才需要新的空間配置, 若先在外面宣告,感覺不是很好操作,此外該函數同時想回傳不只一個此類的結構變數 因此想要用指標作參數, int function(DataSructure * A, DataStructure * B){ A = malloc( sizeof(DataStructure) ); B = malloc( sizeof(DataStructure) ); ..... } int main(){ DataStructure * x = NULL , *y = NULL ; function( x , y); ..... // 使時 x , y 仍然指向 NULL,並沒有指向 function 配置出的記憶體空間 } 想請問,是有語法上的錯誤? 還是在函數中用 malloc 配置的空間屬於區域變數, function 執行完後,空間就被收回? (我自己測試覺得比較像這個原因) 如果是後者,想請問有什麼好方法,或是比較常用的處理方式能處理這個問題呢? ~謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.18.7

07/09 19:21, , 1F
傳址或傳值.想要改變指標指的位址.必須傳指標的位址進去
07/09 19:21, 1F

07/09 19:21, , 2F
要使用雙重指標...
07/09 19:21, 2F

07/09 19:46, , 3F
你做的是 x→NULL、A→x、A→sizeof(DataStructure)
07/09 19:46, 3F

07/09 21:01, , 4F
function( &x , &y )
07/09 21:01, 4F

07/09 21:33, , 5F
所以函數中配置的空間,在函數執行完後,空間還會在囉?
07/09 21:33, 5F

07/09 21:49, , 6F
恩...還會在阿~~
07/09 21:49, 6F

07/09 21:54, , 7F
了解,謝謝以上大大們的回覆~
07/09 21:54, 7F

07/10 00:47, , 8F
也記得要 free
07/10 00:47, 8F
文章代碼(AID): #1ALT4Q3E (C_and_CPP)
文章代碼(AID): #1ALT4Q3E (C_and_CPP)