链表的结构是
typedef struct _SHOW_DATA
{
int GainStates;
int ShowDataIsValid;
struct _SHOW_DATA *pNext;
}SHOW_DATA;
typedef struct _DATA_CHAIN
{
SHOW_DATA *pStart;
SHOW_DATA *pWrite;
}DATA_CHAIN;
添加链表方法如下
void DataChain_Add(DATA_CHAIN *pChain,SHOW_DATA *pshowData)
{
if(pChain->pStart == NULL)
{
pChain->pStart = pshowData;
pChain->pWrite = pshowData;
FirstDataIn = TRUE;
}
else
{
pChain->pWrite->pNext = pshowData;
pChain->pWrite = pChain->pWrite->pNext;
}
}
pStart保存链表的起始指针,pWrite指向链表的结尾节点,利用pshowData=malloc(sizeof(SHOW_DATA))不断添加链表,我用的是labwindows2009编译器。经调试发现,当链表较短的时候,pStart->pNext== 0x00FF3C20;地址是正确的,但随着添加链表长度增加,突然地址变成了0x0000001E(见附件),释放链表,释放到0x0000001E这个地址的时候,当然也就就出错了,提示“attempt to free pointer to memory not allocated by malloc() or calloc()”;请问这是怎么回事?谢谢!!!