Re: [問題] malloc問題
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 220.137.80.95
: → legnaleurc:要再多取一次址 03/15 20:45
: → legnaleurc:alloc_mem( int ** p ); 03/15 20:45
: → peiga:謝謝l大,不過再次請教取二次址的用意何在??謝謝 03/15 20:48
: → windincloud:你要把ptr自己的位置傳到alloc_mem 而不是傳入ptr所指 03/15 20:57
: → windincloud:的位置 03/15 20:57
謝謝2位前輩的熱心指導,不過小弟還是不能意會
我所知,malloc(size_t)是程式向作業系統要求一定大小的記憶體空間作配置
所以malloc()的回傳值是一個point,而這個point會指向我們向作業系統要求
的記憶體空間的位址
一般用法像是
int main()
{
int *p;
p = (int *)malloc(sizeof(int)); //向作業系統要一個int大小的空間
*p = 1;
// p的值存放的是剛才呼叫malloc()的回傳值
// p的位址是程式執行時,作業系統給定的
return 0;
}
套用推文前輩說的是要把ptr的位置傳到alloc_mem()裡
而不是傳ptr所指向的位址,小弟列出程式碼如下(如有錯誤請糾正)
但小弟不懂的是為何要這麼做及先前的程式無法這麼做呢?
void alloc_mem(int *p)
{
//換個方法寫
int *tmp = (int *)malloc(sizeof(int));
//tmp指向剛才向OS要的記憶空間位址
p = tmp;
//main ptr本身的位址=tmp??
//那我使用ptr會指向?? *ptr = ???
}
int main()
{
int *ptr;
alloc_mem(ptr);
/*...*/
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.80.95
推
03/15 21:41, , 1F
03/15 21:41, 1F
謝謝E大指正,已修改
※ 編輯: peiga 來自: 220.137.80.95 (03/15 21:47)
推
03/15 21:57, , 2F
03/15 21:57, 2F
→
03/15 22:16, , 3F
03/15 22:16, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章