递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 224|回复: 4
打印 上一主题 下一主题

[视窗] 有没有在堆上开辟空间的命令

[复制链接]

144

主题

1238

帖子

5740

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
5740
QQ
跳转到指定楼层
楼主
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下面这两句
  1. //在堆上开辟空间
  2. huoshan::DAS* kaip = new huoshan::DAS();

  3. //释放堆空间
  4. delete kaip;
复制代码


火山视窗封装视频教程
回复

使用道具 举报

18

主题

337

帖子

2915

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2915
沙发
发表于 5 天前 来自手机 | 只看该作者
视窗就是要避免直接堆上开空间
回复

使用道具 举报

344

主题

1595

帖子

6464

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6464
QQ
板凳
发表于 5 天前 | 只看该作者
本帖最后由 urenai 于 2024-11-16 19:00 编辑

似乎这些都是基础知识!!
  1. Windows 操作系统提供了丰富的 API 来管理和操作堆(Heap),这些 API 主要位于 `kernel32.dll` 库中。堆是用于动态内存分配的区域,通过这些 API,程序可以创建、销毁堆,并在堆上分配或释放内存块。以下是一些常用的 Windows 堆操作 API:

  2. 1. **HeapCreate**
  3.    - 创建一个新的堆对象。该函数返回一个句柄,此句柄可以用于其他堆操作函数。
  4.    - 函数原型:`HANDLE HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize);`

  5. 2. **HeapDestroy**
  6.    - 销毁由 `HeapCreate` 创建的堆对象。销毁堆后,所有之前分配的内存块都自动释放。
  7.    - 函数原型:`BOOL HeapDestroy(HANDLE hHeap);`

  8. 3. **HeapAlloc**
  9.    - 在指定的堆中分配一块内存。
  10.    - 函数原型:`LPVOID HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes);`

  11. 4. **HeapReAlloc**
  12.    - 调整堆中已分配内存块的大小。如果新的大小小于原大小,则多余部分将被释放;如果大于原大小,则会尝试扩展内存块。
  13.    - 函数原型:`LPVOID HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes);`

  14. 5. **HeapFree**
  15.    - 释放之前通过 `HeapAlloc` 或 `HeapReAlloc` 分配的内存块。
  16.    - 函数原型:`BOOL HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);`

  17. 6. **HeapSize**
  18.    - 返回指定内存块的实际大小。这个大小可能比最初请求的大小要大,因为堆管理器可能会为管理信息预留额外的空间。
  19.    - 函数原型:`SIZE_T HeapSize(HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem);`

  20. 7. **HeapValidate**
  21.    - 验证堆的完整性。如果堆损坏,该函数将返回 `FALSE`。
  22.    - 函数原型:`BOOL HeapValidate(HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem);`

  23. 8. **GetProcessHeaps**
  24.    - 获取当前进程使用的所有堆的列表。这包括默认堆以及任何通过 `HeapCreate` 创建的堆。
  25.    - 函数原型:`DWORD GetProcessHeaps(DWORD NumberOfHeaps, PHANDLE ProcessHeaps);`

  26. 9. **GetProcessHeap**
  27.    - 获取当前进程的默认堆的句柄。
  28.    - 函数原型:`HANDLE GetProcessHeap();`

  29. 这些 API 是底层的内存管理工具,使用不当可能导致内存泄漏或其他错误。因此,在调用这些函数时需要特别小心,确保正确地分配和释放内存。在实际开发中,通常推荐使用更高级别的语言特性或库来处理内存管理,例如 C++ 中的智能指针或 STL 容器,以减少出错的可能性。
复制代码


专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

144

主题

1238

帖子

5740

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
5740
QQ
地板
 楼主| 发表于 5 天前 | 只看该作者
urenai 发表于 2024-11-16 18:58
似乎这些都是基础知识!!

我问的是火山当中的,并不是C++或者API
火山视窗封装视频教程
回复

使用道具 举报

39

主题

320

帖子

3174

积分

贵宾

火山官方交流群:831858564

Rank: 9Rank: 9Rank: 9

积分
3174
QQ
5#
发表于 4 天前 | 只看该作者
分配内存 这个命令 应该就是 在堆上的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-21 19:10 , Processed in 0.090130 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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