sevity sevity - 11 months ago 60
C Question

Is it OK to free void*?

struct foo
int a;
int b;

void* p = (void*)malloc(sizeof(struct foo));
((foo*)p)->a;//do something.
free(p);//Is this safe?


Answer Source


malloc returns void * and free takes void *, so some of your casts are meaningless, and you're always freeing a void * even if you're starting with some other sort of pointer.