NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

labwindows2009添加链表出错

链表的结构是
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()”;请问这是怎么回事?谢谢!!!

下载全部
0 项奖励
1 条消息(共 2 条)
3,286 次查看

你用vc的环境有没有类似的问题?

District Sales Manager | Shanghai Pudong, China
0 项奖励
2 条消息(共 2 条)
3,243 次查看