我有这个代码
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在任何时候都未初始化,因此无法使用。