У меня странная ошибка, из-за которой я не могу освободить () структуру, для которой у меня есть malloc () RAM.
У меня есть структура parent и child, где child - это структура типа int. Я использую malloc () для выделения ram как для родительских, так и для дочерних структур (где дочерней структурой является malloc () для размера массива дочерней структуры). Затем я использую memcpy для копирования массива в родительскую структуру.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct child child_t;
typedef struct parent parent_t;
struct child {
int item;
};
struct parent {
child_t *_child;
};
child_t list[] = {
{ .item = 1 },
{ .item = 2 },
{ .item = 3 },
};
int main(void) {
parent_t *_parent = malloc(sizeof(parent_t));
_parent->_child = malloc(sizeof(list));
memcpy(&_parent->_child, &list, sizeof(list));
free(_parent->_child);
free(_parent);
printf("success\n");
return 1;
}
free(_parent->_child);
в итоге выдает мне сообщение Aborted (core dumped) в качестве ошибки. Я проверил использование оперативной памяти и могу сказать, что должен освободить ребенка, но я не уверен, как это сделать.