看板 C_and_CPP 關於我們 聯絡資訊
由於要實作一種資料結構,需要動態配置記憶體空間, 而這個動作想要放在一個函數裡處理,而且只有在此函數的運作才需要新的空間配置, 若先在外面宣告,感覺不是很好操作,此外該函數同時想回傳不只一個此類的結構變數 因此想要用指標作參數, 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
johnfun:傳址或傳值.想要改變指標指的位址.必須傳指標的位址進去 07/09 19:21
johnfun:要使用雙重指標... 07/09 19:21
snowlike:你做的是 x→NULL、A→x、A→sizeof(DataStructure) 07/09 19:46
winest:function( &x , &y ) 07/09 21:01
henry035:所以函數中配置的空間,在函數執行完後,空間還會在囉? 07/09 21:33
johnfun:恩...還會在阿~~ 07/09 21:49
henry035:了解,謝謝以上大大們的回覆~ 07/09 21:54
ledia:也記得要 free 07/10 00:47