struct foo
{
int a;
int b;
};
void* p = (void*)malloc(sizeof(struct foo));
((foo*)p)->a;//do something.
free(p);//Is this safe?
Run Code Online (Sandbox Code Playgroud)
是 - free将指针指向void,因此当您调用它时,指针(隐式)转换为指向void的指针.
其余代码不太安全:
void* p = (void*)malloc(sizeof(foo));
Run Code Online (Sandbox Code Playgroud)
你应该不投的回报将通过malloc(C语言).这可以掩盖忘记的错误#include <stdlib.h>