HeapAlloc() 第一个参数不太懂。求解。

xiaozi5230 2016-06-26 07:21:35
char* icmpbuf = NULL;

icmpbuf = (char*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, packlen);

参数1 hHeap要分配堆的句柄,可以通过HeapCreate()函数或GetProcessHeap()函数获得。
参数2是将分配的内存全部清0
参数3是内存的分配大小。

参数1是什么意思。GetProcessHeap() 获得句柄 ,获取哪里的句柄呢。
求解下。
...全文
433 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-06-27
  • 打赏
  • 举报
回复
搜“毛德操 内存管理”
「已注销」 2016-06-27
  • 打赏
  • 举报
回复
引用 4 楼 xiaozi5230 的回复:
[quote=引用 3 楼 dustpg 的回复:] 不是说了么,默认堆,可以再用HeapCreate 创建一个堆, 这条函数就是从指定堆里面申请一段内存
默认堆,是那里。不知道这个默认堆是什么意思啊。你能一次讲解的细致一点吗,真的没懂。[/quote]操作系统维护的,你无需关心,而且你也不可能知道其中的细节。你可以认为操作系统在创建进程时,给每个进程用 HeapCreate 创建了一个进程默认堆——当然,不一定就是这样实现的,但是你可以这么理解。GetProcessHeap 就是返回它的句柄。说白了就是用就行了,原理你是没法知道的,因为 Windows 不开放。如果你要非探究,微软 API 里得翻个底朝天。
xiaozi5230 2016-06-26
  • 打赏
  • 举报
回复
引用 3 楼 dustpg 的回复:
不是说了么,默认堆,可以再用HeapCreate 创建一个堆, 这条函数就是从指定堆里面申请一段内存
默认堆,是那里。不知道这个默认堆是什么意思啊。你能一次讲解的细致一点吗,真的没懂。
dustpg 2016-06-26
  • 打赏
  • 举报
回复
不是说了么,默认堆,可以再用HeapCreate 创建一个堆, 这条函数就是从指定堆里面申请一段内存
xiaozi5230 2016-06-26
  • 打赏
  • 举报
回复
引用 1 楼 dustpg 的回复:
GetProcessHeap Retrieves a handle to the default heap of the calling process. This handle can then be used in subsequent calls to the heap functions. 调用进程的默认堆句柄
没太懂呢,大神,什么位置的句柄,或者说哪个堆句柄。貌似突然冒出来。对不上号。
dustpg 2016-06-26
  • 打赏
  • 举报
回复
GetProcessHeap Retrieves a handle to the default heap of the calling process. This handle can then be used in subsequent calls to the heap functions. 调用进程的默认堆句柄

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧