c-释放一个指向结构的指针



我有这个代码

 struct PDATA{
    int NTH;
    int NPH;
    double th_start;
    double th_step;
    double ph_start;
    double ph_step;
    };
    typedef struct PDATA *PDATA_P;
    struct PDATA PAT_DATA;
    PDATA_P PAT_DATA_P;
    PAT_DATA_P = (PDATA_P) malloc(sizeof(struct PDATA));
    PAT_DATA_P=&PAT_DATA;
    ....
    free(PAT_DATA_P); 

当我释放我的指针时,我得到了这个错误:

*** glibc detected *** /home/pc-linux/Desktop/Projects/AM_v0.1/Debug/AM_v0.1: free(): invalid pointer: 0xbfffe03c ***

错误在哪里?

您的错误在PAT_DATA_P = &PAT_DATA 线上

在堆栈上分配CCD_ 2。

也许您的意思是*PAT_DATA_P = PAT_DATA复制成员,而不是分配指针?

您用以下行将堆栈中分配的变量的地址分配给指针:

PAT_DATA_P=&PAT_DATA;

然后你试着解放它!

始终初始化要创建的变量。这是一个很好的做法
PAT_DATA在任何时候都未初始化,因此无法使用。

相关内容

  • 没有找到相关文章

最新更新