Как мне освободить утечку памяти из следующего кода.
struct object_one{
int value;
}*object,object_node;
struct node_one {
void **pointers;
}*node, node_node;
node sample(){
object number;
node node123;
node123 = malloc(sizeof(node_node));
number = malloc(sizeof(object_node));
number->valu = malloc(sizeof(int));
number->value = 9;
node123->pointers[0]=number;
free(number);
return node123;
}
Правильно ли я делаю способ освободить память, на которую ссылается number
. Как только я сделаю вышеуказанное, я получу ошибку;
Invalid read of size 4
==15957== at 0x403804: main (abc.c:1255)
==15957== Address 0x540cb50 is 0 bytes inside a block of size 4 free'd
Подскажите, пожалуйста, как я могу предотвратить утечку памяти в этом состоянии? Заранее спасибо.
[EDIT] * * +1010
Привет, на самом деле вышеупомянутое не настоящий код, который у меня есть. Но я старался изо всех сил ссылаться на sturcutre и семантику моего кода. На самом деле я реализую структуру данных. number
- это временное хранилище, а node123
- моя настоящая база данных. Я хотел бы присвоить значение number
в базе данных и разыменовать его. Тип number
является компонентом базы данных.
[EDIT2]
Код, соответствующий строке 1255
, печатает значение, которое хранится в object i'e value
. Это выглядит так:
object tempObject;
tempObject = search_object(root,50);
[1255] printf("Key is %d ------>value is %d\n",50,tempObject->value);
Здесь функция search_object
ищет значение, соответствующее клавише 50
. Функция возвращает правильное значение, связанное с клавишей, и все еще показывает такую ошибку.