作者henry035 (Rex)
看板C_and_CPP
標題[問題] 如何傳出區域中的 malloc 空間?
時間Thu Jul 9 19:14:33 2009
由於要實作一種資料結構,需要動態配置記憶體空間,
而這個動作想要放在一個函數裡處理,而且只有在此函數的運作才需要新的空間配置,
若先在外面宣告,感覺不是很好操作,此外該函數同時想回傳不只一個此類的結構變數
因此想要用指標作參數,
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