Вот в основном то, что я пытаюсь сделать:освобождая массив структуры, выделенный с двойным указателем
свободной памяти, который был выделен в другой области, используя двойные указатели. Следующий код является неполным, но полностью описывает то, что я пытаюсь выполнить.
так вот моя функция чтения буфера (C псевдокод)
char *read_buffer(char *buf, myStruct **arr, int nbElm)
{
buf = malloc(...);
...//many things done (use of the read(),close()... functions
...//but not referencing any of the buffer to my structure
...
*arr = (myStruct *) = malloc(sizeof(myStruct) * nbElm);
return (buf);
}
Вот вид функции я использую между моим распределением памяти и мое освобождение попытка:
void using_struct(myStruct *ar, int nbElm)
{
int i;
i = 0;
while (i < nbElm)
{
// Here I use my struct with no problems
// I can even retrieve its datas in the main scope
// not memory is allocated to it.
}
}
мой основная функция:
int main(void)
{
char *buf;
myStruct *arStruct;
int nbElm = 4;
buf = read_buffer(buf, &arStruct, nbElm);
using_struct(arStruct, nbElm);
free(buf);
buf = NULL;
free(arStruct);
while(1)
{;}
return (1);
}
Единственная проблема заключается в том, что я устанавливаю цикл while до или после моего свободная функция, я не вижу изменений в памяти, используя top на моем терминале. Это нормально?
Спасибо заранее,
вы должны '' free' asStruct' только один раз, а не в цикле. – ameyCU