一 程序的内存分配

一个由C/C++编译的程序占用的内存分为以下几个部分

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。它与数据结构中的堆是两回事,
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。

二 Win32 堆内存分配Demo

#include <windows.h>int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR     lpCmdLine,int       nCmdShow)
{/* TODO: Place code here. by bo*/char szBuffer[100];HANDLE hHeap=GetProcessHeap();char *buff=HeapAlloc(hHeap,0,0x10);char *buff2=HeapAlloc(hHeap,0,0x10);wsprintf(szBuffer, "0x%08x",hHeap);MessageBox(NULL,szBuffer,TEXT("堆地址"),0);wsprintf(szBuffer, "0x%08x",buff);MessageBox(NULL,szBuffer,TEXT("第一次在堆分配的地址"),0);wsprintf(szBuffer, "0x%08x",buff2);MessageBox(NULL,szBuffer,TEXT("第二次在堆分配的地址"),0);return 0;
}

先获取进程堆,然后在其中分配内存;返回堆句柄;用此句柄进行分配;运行如下;

Win 10,CFree 5.0;

Win32 堆内存分配示例相关推荐

  1. Win32下内存分配简单示例 - 使用CFree

    Windows下内存分配示例:win7系统:CFree 5.0: 先用Win32的VirtualAlloc函数:再用标准C的malloc: 运行结果: #include <windows.h&g ...

  2. 【C 语言】内存四区原理 ( 栈内存与堆内存对比示例 | 函数返回的堆内存指针 | 函数返回的栈内存指针 )

    文章目录 一.函数返回的堆内存指针 二.函数返回的栈内存指针 一.函数返回的堆内存指针 在 main 主函数中 , 调用 get_memory 子函数 , 返回 malloc 初始化的堆内存 , 可以 ...

  3. 4g内存 堆内存分配多少_我需要多少内存

    4g内存 堆内存分配多少 什么是保留堆? 我需要多少内存? 在构建解决方案,创建数据结构或选择算法时,您可能会问自己(或其他人)这个问题. 如果此图包含1,000,000条边并且我使用HashMap进 ...

  4. java 虚拟机 xms,堆内存分配: -Xms 256m -千热网Xmx 256m JVM初始分配的内存由-Xms指定...

    摘要:服务器技术网nifengsoft 堆内存分配: -Xms 256m -千热网Xmx 256m JVM初始分配的内存由-Xms指定堆(Heap)和非堆(Non-heap)内存: 堆是运行时数据区域 ...

  5. java虚拟机内存比例,【Java虚拟机】堆内存分配策略总结

    1 一般情况 对象出生在Eden区. 第一次MinorGC之后仍然存活,并且能被Survivor容纳,则被移动到Survivor空间中,并将年龄设为1. 对象在Survivor区中每熬过一次Minor ...

  6. Java堆内存分配与回收策略

    java主要在堆上分配内存,而Java堆又分为新生代(YoungGen)和老年代(OldGen)两个部分,新生代又再分为Eden区和Survivor区两部分,本文根据java堆的划分,描述hotspo ...

  7. JVM中对象如何在堆内存分配

    在单线程的情况下 1.指针碰撞(Bump The Pointer):内存规整的情况下: 分配空间的工作只是将指针像空闲内存一侧移动对象大小的距离即可. 2.空闲列表(Free List):内存不规整的 ...

  8. 【转】java字符串池和字符串堆内存分配

    Java运行环境有一个字符串池,由String类维护.执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将& ...

  9. 栈和堆存储在计算机RAM中,堆内存和栈内存及C++内存分配

    1.现代操作系统内存管理主流的操作系统(Windows,Linux)都采用虚拟内存管理的方式,具体说就是:页式管理.段式管理.段页式管理. 操作系统分配资源的单位是进程,所以,内存管理的过程也是以进程 ...

最新文章

  1. win32com python_python模块:win32com用法详解
  2. 动态规划(五) 最大连续子序列和(Maximum Continuous Subsequence Sum)
  3. 什么是 10x 程序员
  4. 常州模拟赛d7t2 数组
  5. 什么是智能颈部按摩仪低频脉冲电流?它会对人体有何影响?
  6. Kruskal算法的应用
  7. wx.showToast() 在真机中一闪而过
  8. QT打印打印excel
  9. 【T+】畅捷通T+存货档案批量修改存货属性
  10. 解决docker启动错误 error creating overlay mount to /var/lib/docker/overlay2
  11. idea批量重命名(快捷键+全部替换两种方式)
  12. 4-Elasticsearch字段类型
  13. 8421码,5421码,2421码,余3码课后学习及整理
  14. 通灵学院|游戏设计研习8:游戏空间设计★(800字)
  15. java 清除警告的注解_忽略警告注解@SuppressWarnings详解
  16. buddypress主题_WordPress Gone Social-BuddyPress
  17. python3基础教程雪峰_[雪峰磁针石博客]python3快速入门教程2数据结构1变量与赋值...
  18. python msgbox_Python PyMsgBox包_程序模块 - PyPI - Python中文网
  19. 正则表达式匹配空格与换行
  20. 基金Alpha值 matlab,基金中的α、β、Sharpe比率都是什么意思?

热门文章

  1. python中怎么打开文件_python如何打开文件
  2. bugku ctf 杂项 啊哒 writeup || foremost的安装
  3. Vue el-menu高亮设置及点击菜单项实现路由跳转
  4. 查找数组中第K个最小值
  5. C# 学习笔记(15)自己的串口助手----波形显示
  6. 信号公式汇总之傅里叶变换
  7. CTFshow 信息收集 web17
  8. [YTU]_1066 ( 输入n个数和输出调整后的n个数)
  9. GPU 内存的分级综述(gpu memory hierarchy)
  10. django查询表记录的十三种方法