私が次の状況にあるとしましょう(いくつかの大まかな擬似コード):
struct {
int i;
} x
main(){
x** array = malloc(size of x pointer); // pointer to an array of pointers of type x
int* size = current size of x // (initally 0)
add(array, size);
}
add(x** array, int* size){ // adds one actual element to the array
x** temp = realloc(array, (*size)+1); // increase the array size by one
free(array);
array = temp;
// My question is targeted here
array[*size] = malloc(size of x); // makes a pointer to the value
array[*size]->i = size;
*size++;
}
私の質問は次のとおりです。add()が終了すると、配列に格納されているポインターの値は、func()内に割り当てたため、関数呼び出しスタックとともに消えますか?私は彼らがそうするかもしれないのではないかと恐れています。その場合、私が物事を行うためのより良い方法があるでしょうか?