私はこのページから学びました:FAQ関数内でポインターを初期化したい場合は、ポインターをポインターに渡す必要があります**p
。foo1()
void foo1(int **p) {
*p = malloc(100*sizeof(int)); // caller can get the memory
}
void foo2(int *p) {
p = malloc(100*sizeof(int)); // caller cannot get the memory
}
ただし、ポインターは、その値が指すアドレスであることを意味します。foo2()
スコープを離れた後、割り当てられたメモリはどこに行きますか?
ポインターを値に渡す場合とポインターをポインターに渡す場合の動作の違いをまだ理解できませんか? SOを検索しましたが、解決策または簡単な説明しか見つかりませんでした。誰かがより詳細に助けることができますか?