cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 713|回复: 1

free释放内存出错

[复制链接]
发表于 2010-6-19 22:16:26 | 显示全部楼层 |阅读模式
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,和这有关系吗?关键是当运行时间短的时候,运行是正确的
发表于 2010-6-27 20:43:01 | 显示全部楼层
上传程序。或者你单步计试尝试。我看提示还是说为空。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-12 09:23 , Processed in 0.799400 second(s), 9 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表