2015-02-17 3 views
1

Почему переданная переменная «список» после выполнения функции «тест» пуста, то есть доступ к элементам списка или освобождение списка указателей приводит к утечке памяти?Почему значения переменной теряются после вызова функции в C?

Что мне не хватает?

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); 
} 

ответ

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

должен быть

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

container только локальная переменная, копия int* list.

Также вы, как правило, should not cast возвращение malloc.

+0

Спасибо, это сделало трюк! – Younes

Смежные вопросы