Re: только С. запутался с malloc/free и указателями
От: Were  
Дата: 08.03.09 12:49
Оценка: 4 (1)
Здравствуйте, vav, Вы писали:

vav>при выполнении ругается, что память портится..

vav>а по моему разумению, должно быть именно так
vav>где прокололся? так же приветствуются комментарии на сколько все криво.

Видимо запутался в обилии указателей )

void load(elementsStruct ***arr, int * cnt)
{
    *cnt = GetElementsCount();
    *arr = (elementsStruct **)malloc(*cnt*sizeof(elementsStruct *));
    for (int i = 0; i < *cnt; i++)
        (*arr)[i] = GetNext();
    return;
}

main()
{
    elementsStruct **arr1 = 0;
    int cnt = 1;
    load(&arr1, &cnt);
    for (int i = 0; i < cnt; i++)
    {
        printf("print something from elementsStruct\n");
        free((void*)arr1[i]);
    }
    free((void *)arr1);
    return 0;
}

Всяческие проверки на null-pointer тоже не мешает вставить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.