typedef struct //this is a some structure
{
char *a,*b;
float x;
}name;
void freeelem(void *x) //the function for element mem free
{
free(((name*)x)->a);
free(((name*)x)->b);
}
void* allocelem() //
{
void *aux;
aux=malloc(sizeof(name));
return aux;
}
int main()
{
void *x=allocelem();
((name*)x)->a="fdasf";
((name*)x)->b="fafas";
freeelem(x);
return 0;
}
我不明白为什么这会给赛格错误。这是我访问结构的方式吗?................................................................................
在 freeelem
函数中,您在指针上调用 free
,该指针不是由 malloc
-family 函数获得的。 这会导致未定义的行为。
要解决此问题,请删除这些free
调用;或者在分配给a
并使用 -family 函数malloc
并在main
中b
。
此外,malloc(sizeof(Date))
应该是malloc(sizeof(name))
的,yoy 应该在 main
年底(或 freeelem
年底(free(x)
。