Я не могу понять, почему в этом коде есть утечка памяти.
Мне нужно вернуть копию входного значения.
Здесь valgrind показывает предупреждение "8 байтов в 1 блоках определенно потеряны в записи потерь 1 из 1"
void* ADTGetIntValue(void* dato) {
int* val = malloc(sizeof(int));
memcpy(val, ((DataObject *)(dato))->valore, sizeof(int*));
return val;
}
Эта функция вызывается этим через указатель функции:
void* adtGetValue(DataObject* dato){
return (*dato->tipo->get_val)(dato);
}
в главном Я печатаю int и вызываю функцию: *((int *) (adtGetValue(data)))
Это определениеуказателя функции: typedef void* (*ADTGetValue)(void*);
и эти две структуры используются в коде
typedef struct DataType
{
ADTConstruct costruisci;
ADTDestruct distruggi;
ADTGetValue get_val;
ADTSetValue set_val;
ADTRandomValue rand_val;
ADTReadFromKeyboard read_val;
ADTWriteToMonitor stampa;
ADTClone clona;
ADTCompare compara;
} DataType;
typedef struct DataObject
{
DataType* tipo;
void* valore;
} DataObject;
Любой совет приветствуется:)