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

时间:2015-02-17 08:48:39

标签: c pointers memory-leaks

为什么在执行函数“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);
}

1 个答案:

答案 0 :(得分:7)

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

应该是

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

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

的副本

此外,您通常should not cast返回malloc