Windows 上C++ new/detele如何知道内存大小
Windows 上,但使用C++语言new一块内存,用指针P指向这块内存,但我们调用delete的时候如何知道我们需要释放的空间大小,毕竟我们只给了一个P指针,并没有给出内存大小。
在Windows系统上,每当使用new/new[]申请到内存时,回调用系统的API在堆上开出一块我们需要大小的内存。例如:
int* p = new int[100];
此时申请成功时,P指向了这块内存的一个元素地址。同时,会在P的前面,记录我们申请的内存大小,这样当我们调用delete []p时,系统才知道我们具体申请的内存大小。
以下就是P指针地址前面存储我们申请内存信息的结构体:
//typedef struct _RTL_HEAP_ENTRY {// SIZE_T Size; // USHORT Flags; // USHORT AllocatorBackTraceIndex; // union {// struct {// SIZE_T Settable; // ULONG Tag; // } s1; // struct {// SIZE_T CommittedSize; // PVOID FirstBlock; // } s2; // } u; //} RTL_HEAP_ENTRY, *PRTL_HEAP_ENTRY; 用下面代码查看具体的存储信息
// int *p = new int[100]; // PRTL_HEAP_ENTRY pHeapEntry=(PRTL_HEAP_ENTRY(p)-1); // printf("i: %d, size: %d\n", i, pHeapEntry->Size);以上代码就是通过指针获取内存大小,具体多少字节。 我们可以做个小实验: 1 我们把P向后移动一个位置或者向前,只要不是这块内存的第一个位置,然后我们delete[] p,会有什么后果?后果不可预测!!自己实验下,系统卡死,死循环
Windows 上C++ new/detele如何知道内存大小相关推荐
- 4款Windows上鲜为人知的黑马软件,内存不足也舍不得删除
咱们话不多说,直入主题. CCleaner CCleaner,是一款由外国人发明的,优秀隐私保护和系统优化工具. CCleaner 熟悉它的人都知道,CCleaner的主要用途是清除Windows系统 ...
- Android保存的图像在Windows照片查看器打开提示“可能内存不足”
一个天朗气清的早晨,我开开心心的上班,突然收到一条售后问题,pad中经过我们APP保存的图片在windows上无法打开,提示"可能内存不足",效果如下: 项目经理吓懵了,我突然觉得 ...
- WINDOWS平台上扩展SGA,把你的内存用起来吧
WINDOWS平台上扩展SGA ------------------------------------------------------------------------------------ ...
- python32位 最大内存_64位windows上的Python 32位内存限制
我不知道你为什么认为你的进程应该能够访问4GB.根据MSDN的Memory Limits for Windows Releases,在64位Windows 7上,一个默认的32位进程得到2GB.*这正 ...
- 32位程序在Windows上的内存问题
问题描述: 32位的程序运行在Win2016上,内存增加到1.4G左右就崩溃了. 原因分析: 默认情况下,32位程序虚拟地址空间是4G,其中2G为内核空间,系统使用:2G为用户虚拟地址空间,是用户可申 ...
- 内存检测工具Dr.Memory在Windows上的使用
之前在https://blog.csdn.net/fengbingchun/article/details/51626705 中介绍过Dr.Memory,那时在Windows上还不支持x64,最新的版 ...
- mrtg监控linux主机的甚至,windows上mrtg监控linuxcpu 内存
*网上95%都是linux安装mrtg来做监控,windows来做监控机的很少,即使用也是轻轻点水很肤浅,下面是我亲自在windows上安装mrtg来做监控机的实验,并且也已经开始运行在企业当中.mr ...
- 时间就是金钱!Windows 上必装的 10 款高效软件
点击上方"视学算法",选择"星标"公众号 重磅干货,第一时间送达 来源 | 资源搜罗精选 不管你是上班族还是学生党,是电脑迷还是技术派,都会常跟电脑打交道.今天 ...
- linux运行容器,容器与云|如何在 Windows 上运行 Linux 容器
1.概述 现在能够在 Windows 10 和 Windows 服务器上运行 Docker 容器了,它是以 Ubuntu 作为宿主基础的. 想象一下,使用你喜欢的 Linux 发行版--比如 Ubun ...
- Windows上的原生Linux容器(盆盆的Kubecon课程分享)
您测试过Windows上的Linux容器吗? 这是本周末刚闭幕的Kubecon大会,笔者在课堂上提出的问题. 关于这个问题,大家常有的困惑就是,我们为什么要在Windows上运行Linux容器?您可以 ...
最新文章
- python的分支语句中if和else必须同时出现_Python条件控制分支语句if…else…
- linux ie8找不到,ie浏览器不见了怎么办 三种方法搞定【图文教程】
- literature review and methodology
- 老师吴恩达,身家又增20亿!
- Windows 2000缓冲区溢出技术原理
- webpack4.0各个击破(7)—— plugin篇
- [Ext JS 4] 实战之 ComboBox 和 DateField (消失之解决办法)
- 哈工大讯飞联合实验室发布少数民族多语言预训练模型CINO
- Python3入门机器学习经典算法与应用 第3章 numpy.array 中的运算
- 删除数据清理oracle表空间,oracle删除(释放)数据文件/表空间流程
- 材料模拟python_关于材料计算,模拟,仿真什么区别?
- DBSCAN聚类算法原理和伪代码
- 深度解密Go语言之map
- [GIS原理] 8 GIS基本空间分析-叠置分析|缓冲区分析|窗口分析
- Ubuntu环境下安装QT5
- C++ boost库中的sp_counted_base实现解析
- 如何访问同一局域网内的其他电脑文件
- PS图片无法保存ICO格式解决方法
- 深入了解计算机系统——实验二(Data Lab)(详解)
- 数据大屏领导驾驶舱大数据分析UI1-4(PSD-持续更新)
热门文章
- 详解光纤光缆、网线、电缆的区别
- win10+Python3.7.3+OpenCV3.4.1入门学习(十一 图像金字塔)————11.1 图像金字塔理论基础
- aso优化师是什么_做ASO优化师这么多年,没想到被它打败了!
- 静态代理和动态代理的区别和联系
- [离散数学]集合论基础P_4:运算定律及其证明
- 《SEM长尾搜索营销策略解密》一一2.12 宝洁里的长尾与创新
- NOI-C语言编程基础之循环控制——药房管理
- 前后端分离的好处有哪些?
- (pre-receive hook declined) git push error
- Linux查看目录大小——du命令