首页 > 系统相关 >编程达人Windows核心编程 第18章 演示如何使用堆

编程达人Windows核心编程 第18章 演示如何使用堆

时间:2024-08-23 20:51:26浏览次数:13  
标签:iCnt float Windows 18 编程 hHeap int Heap fArray

18_Heap.cpp

演示如何使用堆

18_Heap.cpp

演示如何使用堆

文章目录


/*------------------------------------------------------------------------
18_Heap.cpp

演示如何使用堆
-----------------------------------------------------------------------*/
#include <tchar.h>
#include <windows.h>
#include <time.h>
#include <stdio.h>

void PrintArray(float fAarry[],int iCnt)
{
for (int i = 0; i < iCnt; i++)
printf(“[%03d]=%0.0f\t”, i, fAarry[i]);
return;
}

int _tmain()
{
srand((unsigned)time(NULL));

//在进程默认堆中申请内存
HANDLE hHeap = GetProcessHeap();
const int iCnt = 200;

//申请fAarry内存块
float* fArray = (float*)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, iCnt * sizeof(float));
for (int i = 0; i < iCnt; i++)
	fArray[i] = 1.0f * rand();

//扩大fArry内存块的大小
fArray = (float*)HeapReAlloc(hHeap, HEAP_ZERO_MEMORY, fArray, 2 * iCnt * sizeof(float));
for (int i = 0; i < 2*iCnt; i++)
	fArray[i] = 1.0f * rand();

//打印内存块的内容
printf("Default Heap:\n");
PrintArray(fArray, 2 * iCnt);

//释放堆
HeapFree(hHeap, 0, fArray);

//创建私有堆
hHeap = HeapCreate(HEAP_GENERATE_EXCEPTIONS, 0, 0);

//申请内存块
fArray = (float*)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, iCnt * sizeof(float));
for (int i = 0; i < iCnt; i++)
	fArray[i] = 1.0f * rand();

//扩大fArry内存块的大小
fArray = (float*)HeapReAlloc(hHeap, HEAP_ZERO_MEMORY, fArray, 2 * iCnt * sizeof(float));
for (int i = 0; i < 2 * iCnt; i++)
	fArray[i] = 1.0f * rand();

//打印内存块的内容
printf("Additional Heap:\n");
PrintArray(fArray, 2 * iCnt);

HeapFree(hHeap, 0, fArray);
//私有堆需要手动释放
HeapDestroy(hHeap);

_tsystem(_T("pause"));
return 0;

}

标签:iCnt,float,Windows,18,编程,hHeap,int,Heap,fArray
From: https://blog.csdn.net/zhyjhacker/article/details/141474613

相关文章

  • WPF ystem.Windows.Markup.XamlParseException HResult=0x80131501 Message='Spec
    System.Windows.Markup.XamlParseExceptionHResult=0x80131501Message='Specifiedclassname'WpfApp268.MainWindow'doesn'tmatchactualrootinstancetype'System.Windows.Window'.RemovetheClassdirectiveorprovideanin......
  • 重头开始嵌入式第二十六天(Linux系统编程 进程间通信 IPC)
    目录IPC进程间通信1.管道通信管道的特性使用流程无名管道1.创建并打开管道:2.无名管道的读写:3.关闭管道: close();4.使用例子:有名管道1、创建:mkfifo2、打开有名管道 open3、管道的读写: 文件IO4、关闭管道:5、卸载管道:remove();IPC进程间通信进程间通信(In......
  • 【Python进阶】Python中的函数式编程元素:map、filter和reduce的妙用
    1、函数式编程概览1.1函数式编程起源与发展函数式编程这一概念可以追溯到20世纪30年代的λ演算理论,这一时期数学家们开始探讨如何通过纯粹的函数运算来构建计算模型。随着时间的推移,函数式编程逐渐发展成为一种重要的编程范式,并在Lisp、Scheme、Haskell等语言中得到了充......
  • windows下安装es与elasticsearch报错
    发现网上很少关于windows安装elasticsearch的文章,所以本人结合一天的报错,解决问题的过程,写一下这篇文章,希望对大家有用,有帮助的话请点一个免费的赞,谢谢。安装es下载:点击https://www.elastic.co/cn/downloads/elasticsearch-->点击'Viewpastreleases'-->下拉栏中,找到7.10......
  • 【软件逆向】第11课,软件逆向安全工程师之windows API函数,每天5分钟学习逆向吧!
    资料获取关注作者,备注课程编号,获取本课配套课件和工具程序。干货开始-windowsAPI函数。微软官方提供的应用程序接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件提供的能力。地址:https://learn.microsoft.com/zh-cn/windows/win32/dlgbox/dialo......
  • 2024“钉耙编程”中国大学生算法设计超级联赛(10)
    时间:08_181011NOI2024 31.80%(703/2211)1008SunBian 55.02%(669/1216)1009不基本子串结构 20.57%(589/2864)1002scenery 21.00%(368/1752)1011NOI2024思路题目问的是“是否一定”,考虑最差情况,比自己排名高的全部拿分了,剩下的人一分不拿,与自己并列排名最后每场......
  • 1817 花生地
    描述童童回老家游玩,帮助奶奶摘花生,来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。童童只能向东或向南走,不能向西或向北走。问童童最多能够摘到多少......
  • 1815 最长上升子序列
    描述一个数的序列 bi​,当 b1​<b2​<...<bS​ 的时候,我们称这个序列是上升的。对于给定的一个序列 (a1​,a2​,...,aN​),我们可以得到一些上升的子序列(ai1​,ai2​,...,aiK​),这里1≤i1​,1≤i2​,...,1≤ik​≤N.比如,对于序列 (1,7,3,5,9,4,8),有它的一些上升子序列,如(1......
  • 少儿编程概述
    少儿编程少儿编程技术参考少儿编程的核心理念是培养孩子思维模式,解决问题逻辑等综合能力,与传统意义上的编程有很大区别。前者培养能力,后者专注技术。国外少儿编程较国内更早开始发展,主要代表有开源平台Scratch以及拥有成熟体系的Tynker。Scratch语言与编程猫......
  • WINGET windows视窗下的命令安装工具
    (WindowsPackageManager)是近年来微软推出的一款命令行工具,用于简化应用程序的安装、升级和管理。它在管理多台机器或维护开发环境时非常有用。以下是对winget的详细介绍以及一些高级用法的示例。什么是winget?winget是WindowsPackageManager的命令行工具,它允许你从命令行安装......