实际上从堆中为对象分配了多少内存?

2023-12-07

我有一个程序使用太多内存来在堆上分配大量小对象。所以我想研究一下优化它的方法。该程序使用Visual C++ 7编译。

有没有办法确定为给定对象实际分配了多少内存?我的意思是当我打电话时new堆分配不小于必要的数量。我怎样才能知道到底分配了多少?


没有确切的答案,因为某些堆管理器可能会使用不同数量的内存来连续分配相同大小的内存。此外,(通常)没有直接的方法来测量特定分配所占用的字节数。

您可以通过分配一定数量的相同大小的项目(例如 4096)并注意所用内存的差异来近似该值。将后者除以前者即可得出答案。请注意,该值随操作系统、操作系统版本的不同而变化,有时应用程序的调试版本可能会启用额外的堆跟踪,从而增加开销。在某些操作系统上,用户可以更改堆策略(即使用一个堆分配器与另一个堆分配器作为默认值)。示例:Windows 和 pageheap.exe

仅供参考,Windows 32 位上的默认(不是 LFH)堆占用:

  • sizeof(your_type),向上舍入到 DWORD 边界,
  • 3 个指针用于上一个/下一个/大小
  • 2 个安全 cookie 指针
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实际上从堆中为对象分配了多少内存? 的相关文章

  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 在 Pandas 中使用 read_csv 处理不需要的换行符

    我对从 SAP 导出的数据有疑问 有时您可以在发布文本中找到换行符 本来应该在一行中的内容却变成了两行 这会导致一个非常糟糕的数据框 最烦人的是 我无法让 pandas 意识到这个问题 它只是读取那些错误的行 即使列数小于标题 错误 dat
  • RAILS,捆绑安装返回 - 未定义符号:SSLv2_method [重复]

    这个问题在这里已经有答案了 可能的重复 未定义的符号 运行捆绑安装时的 SSLv2 method 我尝试 捆绑安装 我的 Rails 项目 但出现此错误 Fetching gem metadata from https rubygems o
  • 通用链接不适用于 WKWebView

    I have web view基于应用程序和公司中的其他本机应用程序 我们正在使用universal links在需要时将用户重定向到其他应用程序 其他应用程序仍然支持universal links 我可以通过按链接来运行它们Apple N
  • Rails 4 资产管道:来自 js 的 asset_path 中资产缺少指纹

    我正在部署一个 Rails 4 0 应用程序 其中包含 HTML 部分模板作为我们前端 JavaScript 框架的资产 尽管这些模板是资产管道的一部分并且已正确预编译 但当我调用asset path从我们的 js 文件中嵌入的 ruby
  • 在 Javascript 中,“d.setDate(d.getDate() + 1)”在时间更改的天数内给出错误答案

    我有以下代码 var d new Date 2016 03 27 console log d getDate d d setDate d getDate 1 console log d getDate d 这给出了错误的答案 27 Date
  • Parallel.Foreach 循环,与显式 throw 语句不一致的行为

    使用 Linqpad 创建了一个简单的程序 我在其中显式抛出异常Parallel Foreach循环 理想情况下应在调用者中捕获为Aggregate Exception 但是当我明确抛出异常时 它有时会随机跳过一些异常 我无法理解这种行为
  • 从 iPhone 上传视频文件到服务器

    我知道如何将图像上传到运行 PHP 的服务器 但我一直坚持上传视频 我用过这个建议上传我的视频文件 发帖方法都可以 我在服务器上得到的是一个0字节的文件 我的代码如下 void imagePickerController UIImagePi
  • Jupyter Notebook 中使用 cython 进行线路分析

    我正在尝试在 jupyter 笔记本中使用 liner profiler 库和 cython 函数 它只工作了一半 我得到的结果仅包含函数的第一行 没有分析结果 cython a cython linetrace True cython b
  • 在T-SQL中生成随机字符串[重复]

    这个问题在这里已经有答案了 可能的重复 使用 T SQL 生成随机字符串 我需要在触发器内生成一个带有字母和数字字符的随机字符串 该字符串的长度必须为 15 并且大写 有人有主意吗 这远非最佳解决方案 但它会按指定方式工作 select c
  • 从 PHP 内部进行 SFTP

    我正在构建一个 Web 应用程序 除了其他功能外 它还需要连接到 FTP 服务器来下载或上传文件 该应用程序是用 PHP 编写的 托管在 Linux 服务器上 我想知道是否也可以提供对 SFTP 服务器的支持 但在 Google 上快速搜索
  • 在 jQuery 中,当单选按钮都具有相同名称时,如何获取它们的值?

    这是我的代码 table tr td Sales Promotion td td td tr table
  • 通用列表属性的必需属性

    是否可以将 Required 属性放到 List 属性上 我绑定到 POST 上的通用列表 想知道如果属性中有 0 个项目 是否可以使 ModelState IsValid 失败 添加Required列表样式属性的属性并不能真正实现您想要的
  • 我尝试安装 React Native 并构建失败

    我尝试安装 React Native 但构建失败 为什么 Windows PowerShell 版权所有 C 微软公司 版权所有 尝试新的跨平台 PowerShellhttps aka ms pscore6 PS C Users stefa
  • Java RMI 中的代码库到底有什么意义?

    我目前正在学习 RMI 我不太理解代码库的概念 我读到的每篇论文都表明 调用远程对象的客户端可以从代码库加载方法定义 现在的问题是 我的类路径中是否不需要描述 接口 如果我只在运行时知道远程对象上的方法 我如何调用它们 这甚至无法编译 我完
  • 为什么我们需要在内联汇编中修改寄存器列表?

    我的指南书中写道 在内联汇编中 Clobered 寄存器列表用于告诉 我们正在使用的寄存器的编译器 因此它可以在之前清空它们 那 我完全不明白 为什么编译器需要知道这一点 保留这些寄存器有什么问题 他们的意思是备份它们并在汇编代码之后恢复它
  • 如何在列出另一个文件之前清除列表文件?

    function listFiles var x document getElementById ResultShown value var date new Date date setDate date getDate 180 var n
  • 如何在集成测试中测试Mongo索引?

    我有一个 Java 方法 它在 Mongo 集合中的两个字段上创建索引 我应该获取集合的索引信息 然后检查索引的名称和字段是否正确 为此编写集成测试最简洁的方法是什么 使用自定义 Hamcrest 匹配器来查看索引是否在集合中是否有意义 在
  • 如何从命令行运行路径中包含空格的 PowerShell 脚本?

    因此 我尝试了多种不同的方法来从命令行运行 PowerShell 脚本 但每种方法都会返回错误 这是这条路径 C Users test Documents test line space PS Script test ps1 我已经尝试过这
  • 带有 Influxdb 的 Grafana 世界地图面板不显示点

    我安装了 Grafana 的世界地图面板 但无法在世界地图面板上显示点 我在看Grafana 世界地图 表数据源和其他链接但没有找到答案 我尝试使用country json 添加截屏我的声誉没有 10 所以我无法添加超过 2 个链接 我也尝
  • 实际上从堆中为对象分配了多少内存?

    我有一个程序使用太多内存来在堆上分配大量小对象 所以我想研究一下优化它的方法 该程序使用Visual C 7编译 有没有办法确定为给定对象实际分配了多少内存 我的意思是当我打电话时new堆分配不小于必要的数量 我怎样才能知道到底分配了多少