win32api函数中heapalloc和heapfree使用导致内存没正常释放
来源:互联网 发布:什么软件拍照好看 编辑:程序博客网 时间:2024/05/21 11:22
1、因为本人使用heapalloc分配内存的对象是结构体
//HTTP消息数据结构体typedef struct _HttpMsgData{string httpMethod;//请求方法(GET/POST)string url;//urlstring postContent;//消息体string contentLength;//post时,消息体长度}HttpMsgData,*LPHttpMsgData;
HeapAlloc分配内存
/分配堆内存LPHttpMsgData pData=(LPHttpMsgData)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(HttpMsgData));
HeapFree释放内存
//释放传参所分配的堆内存HeapFree(GetProcessHeap(),0,pHttpMsgData);
2、改成new、delete内存操作符之后,问题解决
通过咨询网友得知:
win32的heapfree函数,调用时,若待释放的对象有构造、析构函数(如class、c++ struct),heapfree不会调用对象的析构函数。
因为我的结构体里面的成员变量是string类型,string有构造函数、析构函数。也就是说通过heapfree释放结构体时,并不会执行string的析构函数
而delete操作符会执行析构函数
0 0
- win32api函数中heapalloc和heapfree使用导致内存没正常释放
- 2014-03-13周四:内存释放函数HeapFree ()内存开辟函数HeapAlloc重新开辟函数HeapReAlloc
- 2014-03-16周日:内存释放函数HeapFree()
- IOS中使用ARC和定时器导致viewController无法正常释放
- 线程安全:分配堆与内存 API:HeapCreate HeapAlloc HeapSize HeapFree HeapDestroy
- C和C++中内存分配和释放使用介绍
- 频繁通过win32api的createfile函数打开文件句柄导致内存泄漏
- C#中使用Win32API
- Opencv中导致内存增加的cvFindContours释放问题
- HeapAlloc、GlobalAlloc和new等内存分配
- C#中调用WIN32API函数
- HeapAlloc函数
- HeapAlloc函数
- C#中使用WIN32API来遍历文件和目录
- 设计内存分配和释放两个函数
- HeapFree
- c和c++中的内存分配和内存释放函数
- 关于NSTimer的使用和内存释放
- BZOJ 4756 [Usaco2017 Jan]Promotion Counting 线段树合并
- Servlet3.0学习总结(四)——使用注解标注监听器(Listener)
- ssh整合报错:Action class [ ] not found
- 大数据以及Hadoop相关概念介绍
- MyEclipse10安装Log4E插件
- win32api函数中heapalloc和heapfree使用导致内存没正常释放
- log4j.properties 使用说明
- 使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法
- web.xml页面配置参数详解
- 使用Maven搭建Struts2框架的开发环境
- MyBatis--Map实现多条件查询
- Maven学习总结(二)——Maven项目构建过程练习
- ab
- redis 的数据类型