为什么在执行函数“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);
}
答案 0 :(得分:7)
container = (int**) malloc (sizeof(int*) * numOfItems);
应该是
*container = malloc (sizeof(int*) * numOfItems);
container
只是一个局部变量,是int* list
。
此外,您通常should not cast返回malloc
。