только С. запутался с malloc/free и указателями
От: vav Россия  
Дата: 08.03.09 11:22
Оценка:
есть пара функций, одна определяет число элементов
вторая возвращает их по одному (проинициалировав malloc-ом)
    extern int GetElementsCount()(void);
    extern elementsStruct* GetNext(void);



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 = (elementsStruct **)malloc(sizeof(elementsStruct *));
    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);
    free((void *)arr1);
    return 0;
}


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