我必須從另一個函數中分配一個結構,顯然是使用指針。 我一直在盯着這個問題幾個小時,並試圖用一百萬種不同的方式來解決它。Malloc裏面另一個函數
這是一些示例代碼(很簡單):
...
some_struct s;
printf("Before: %d\n", &s);
allocate(&s);
printf("After: %d\n", &s);
...
/* The allocation function */
int allocate(some_struct *arg) {
arg = malloc(sizeof(some_struct));
printf("In function: %d\n", &arg);
return 0;
}
這確實給我同樣的地址之前和分配呼叫後:
Before: -1079752900
In function: -1079752928
After: -1079752900
我知道這可能是因爲它使函數中的一個副本,但我不知道如何實際處理作爲參數的指針。我嘗試了定義some_struct *而不是some_struct,但沒有運氣。我試着用:
int allocate(some_struct **arg)
它工作得很好(需以及改變分配功能),而是根據分配我可能不會改變的聲明,它必須是* ARG。而這將是最正確的,如果我只需要聲明some_struct s ..不是some_struct * s。 分配函數的目的是初始化一個struct(一個some_struct),它也包括分配它。
還有一件事我忘了提。分配函數中的返回0保留給一些狀態消息,因此我不能使用這個返回地址。
'allocate'函數的真正目的是什麼? – Earlz 2010-04-08 15:50:30
如果你必須傳遞一個'* some_struct',並在要分配的函數內分配內存,那麼分配是不可能的。你能否發表更多的作業細節,大概你應該學習什麼? – 2010-04-08 15:59:56
哦,當你發佈更多的細節時,這裏要做的正確的事情就是編輯你的問題來包含它們。你在這裏似乎是新手,可能不知道禮儀。 – 2010-04-08 16:14:16