为什么在 C 中调用函数后变量的值会丢失?

Why are the values of a variable lost after a function call in C?

为什么执行函数"test"后传递的变量"list"为空,即访问列表的元素或释放指针列表会导致内存泄漏?

我错过了什么?

int test(int** container)
{
    int numOfItems = 2;
    int* p1;
    int* p2;
    int j=0;

    container = (int**) malloc (sizeof(int*) * numOfItems);
    for(j=0;j<numOfItems;j++)
         container[j] = (int*) malloc (sizeof(int));

    *(container[0]) = 12;
    *(container[1]) = 13;
}

int main( int argc, const char* argv[] )
{ 
    int* list;
    test(&list);
}
container = (int**) malloc (sizeof(int*) * numOfItems);

应该是

*container = malloc (sizeof(int*) * numOfItems);

container只是一个局部变量,是int* list.

的副本

此外,您通常 should not cast malloc 的 return。