sevity sevity - 16 days ago 9
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?


thanks!

Answer

Yes.

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.

Comments