在一个类中使用了一些用malloc()分配的指针. 形式为:
LPBYTE pData = (unsigned char*) malloc(nSize);
用在初始化的时候分配空间, 然后在析构函数中free.此时一切OK. 但是在一个函数中需要不断的malloc并在这个函数中free. 然后问题就出来了. 当计算完成,要退出该类时调用析构函数中的free,此时报告free出错. 但在这个函数中并没有处理free出错的指针.不知道是什么原因. 大家给点意见.
LPBYTE pData = (unsigned char*) malloc(nSize);
用在初始化的时候分配空间, 然后在析构函数中free.此时一切OK. 但是在一个函数中需要不断的malloc并在这个函数中free. 然后问题就出来了. 当计算完成,要退出该类时调用析构函数中的free,此时报告free出错. 但在这个函数中并没有处理free出错的指针.不知道是什么原因. 大家给点意见.
解决方案 »
- 一个服务会向已注册的激活窗口发送,如何不激活的时候也接收到消息
- 回调函数
- 能否通过文件夹的具体路径查找相应的窗口句柄??
- 为什么没有在指定设备中重绘窗口?
- 我弄一个媒体播放器,运行出现"库没有注册"的错误提示,,应该怎么注册啊?>谢谢
- 两个相同类的问题
- 如何显示误差变化曲线?
- 我问你答:在CFrameWnd类中,oncreate()与oncreateclient的区别!?
- CArray的初始化方法,不知道大家有没有总结过?
- winamp是用什么工具编的,如果来编呀!~
- 使用vc自带的串口通讯控件,不断的调用控件的GetInPut()来接收数据,会发现程序占用的内存在有规律的增大,这是为什么?
- 新手请教
申请了几个就归还几个,
要注意养成习惯,free一个指针以后一定要记得置成NULL,使用前也一定要记得检查是否为空。
你可以自己跟踪一下程序,看看最后一次malloc得到的地址和free的时候的地址是否符合
LPBYTE pData = (unsigned char*) malloc(nSize);
还有,在使用free时,必须保证free(p) 中的地址和pData 相同
如果控制的对的话就应该没事,可能是free的时候那空间已经不存在了。
1) malloc()与free()、new()与delete[] 必须对应。
2)在malloc指针之前,必须将指针置为NULL。
3)为了保险起见,free后, 仍将指针置为NULL。
======原因上面XD们说的很清楚了
保证了上面的三点后,用qrlvls(≌AIR⌒LIKE) (≤和空气一样帅≥√)家伙说的话是:“仔细”!!!
在使用free时,必须保证free(p) 中的地址和pData 相同
建议成员变量前加m_
在这种地方坚持严谨的风格是可以提高软件质量的。
申请了几个就归还几个,要一一对应!
up!!!!
2)在malloc指针之前,必须将指针置为NULL。
3)为了保险起见,free后, 仍将指针置为NULL。!!!