C语言 结构元素自由函数


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并在mainb

此外,malloc(sizeof(Date))应该是malloc(sizeof(name))的,yoy 应该在 main 年底(或 freeelem 年底(free(x)

相关内容

  • 没有找到相关文章

最新更新