free释放内存出错
free释放内存出错SHOW_DATA为一个结构体typedef struct _SHOW_DATA
{
BUFFER Buffer;
struct SHOW_DATA *pNext;
}SHOW_DATA;
typedef struct DATA_CHAIN
{
SHOW_DATA *pStart;
}DATA_CHAIN;
利用malloc添加到链表中去
下面这个函数是释放链表分配的所有内存
void DataChain_DeleteAll(DATA_CHAIN *pChain)
{
SHOW_DATA *pointer;
while(pChain->pStart != NULL)
{
pointer = pChain->pStart;
pChain->pStart = pChain->pStart->pNext;
free(pointer);
}
}
当程序运行时间短(即链表较短)的时候,能释放内存,运行正确,但当运行时间很长的时候,则会释放出错,free(pointer)语句出错,提示“Attempt to free pointer to memory not allocated by malloc() or calloc()”,我明明已经限定条件当指针不为空时才释放的呀,怎么会出错呢,是不是链表太长了分配内存太多了导致出错了,请高手指教?感激不尽!!!
我用的是cvi2009,和这有关系吗?关键是当运行时间短的时候,运行是正确的
上传程序。或者你单步计试尝试。我看提示还是说为空。
页:
[1]