C 无结构元素函数
我不明白为什么这是seg的错。这是我进入建筑的方式吗?C 无结构元素函数,c,segmentation-fault,structure,free,C,Segmentation Fault,Structure,Free,我不明白为什么这是seg的错。这是我进入建筑的方式吗? 在freelem函数中,您对不是通过malloc-系列函数获得的指针调用free。这会导致未定义的行为 要解决此问题,请删除那些免费的调用;或者在main中分配给a和b时,使用malloc-系列功能 另外,malloc(sizeof(Date))应该是malloc(sizeof(name)),而yoy应该free(x)在main的末尾(或者freelem的末尾)。如果我不能使用malloc,如果它们已经分配到其他地方,我想释放它们怎么办?我
在
freelem
函数中,您对不是通过malloc
-系列函数获得的指针调用free
。这会导致未定义的行为
要解决此问题,请删除那些免费的调用;或者在main
中分配给a
和b
时,使用malloc
-系列功能
另外,malloc(sizeof(Date))
应该是malloc(sizeof(name))
,而yoy应该free(x)
在main
的末尾(或者freelem
的末尾)。如果我不能使用malloc,如果它们已经分配到其他地方,我想释放它们怎么办?我知道类型和结构。@ConstantinMariusManuelfree
的工作方式是你只能释放你想要的东西。别无选择
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;
}