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

2023-12-07

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

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


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

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

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

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

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

  • C中函数指针的递归声明

    我想声明一个返回指向相同类型函数的指针的函数 我想用它来实现如下状态机 typedef event handler t event handler t event t compilation error event handler t st
  • 动态选择和更新 LINQ 结果集中的列值

    我有一个场景 其中存在 LINQ 结果集 我使用了以下查询 var stockDetails from d in db BloodBanks where d bbUserName Session username ToString sele
  • 如何通知父线程所有子线程都已终止?

    我有一个控制台应用程序正在移植到 WPF 该应用程序有 3 个工作线程 在将一些输出结果打印到屏幕上之前 这些线程都连接到主线程 我的理解是 如果我尝试在 WPF 应用程序中执行相同的操作 GUI 将被阻止并且不会响应用户 那么如何通知父线
  • 在 C# 中轻松创建支持索引的属性

    在 C 中我发现索引属性 http msdn microsoft com en us library aa288464 VS 71 aspx非常有用 例如 var myObj new MyClass myObj 42 hello Conso
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • 可变数量的(常量)引用参数

    我试图从我的高级代码 使用 C 11 中消除原始指针 并且我找到了引用 尤其是const 在许多情况下 当没有所有权转移时 是一个很好的替代品 但如果有的话该怎么办variable我想通过 常量 引用传递的参数数量 你不能创建一个std v
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • 为什么将 char 传递给函数会改变它在 c 中的值?

    我目前正在关注本作业簿 http www cs bham ac uk exr lectures opsys 10 11 lectures os dev pdf关于构建操作系统 我的目的是写一个64位内核 我已经在文本模式下加载 内核 代码并
  • 我的 WPF 应用程序未触发 MainWindow_Loaded

    我目前正在关注Pluralsight C Fundamentals Part 1并在Classes and Objects视频部分指导我在 Visual Studio 中创建一个新的 WPF 应用程序并填写代码 这导致以下结果 namesp
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 函数指针上的未知类型 F TYPE

    include
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • Objective c,实例成员的内存管理

    我对实例成员的内存管理感到困惑 我有一个带有 ivar 的课程 DetailedResultsTableViewController detailedResultsTableViewController and property nonat
  • C++:LPWSTR 在 cout 中打印为地址

    我有一个类型变量LPTSTR 我打印到std cout with lt lt 在 ANSI 系统中 不知道它是在哪里确定的 它工作得很好 它打印了字符串 现在 在 Unicode 系统中 我得到的是十六进制地址而不是字符串 那么 为什么LP
  • 类型别名和不完整类型

    我可能已经超出了解决这个本应简单的问题的范围 我在这里开始这个问题 在编译时获取基类的类型 https stackoverflow com questions 17735852 getting type of a base class at
  • 为什么必须通过 this 指针访问模板基类成员?

    如果下面的类不是模板 我可以简单地拥有x in the derived班级 但是 通过下面的代码 我have to use this gt x Why template
  • char[length]初始化并处理

    我定义了一个字符数组 char d 6 如果我在以下方面有误 请纠正我 此时没有为变量分配内存d 现在我要初始化它 d aaaaa 这种初始化之后 就不需要释放内存了 它将自动完成 我怎么知道是否char 被初始化了吗 我正在寻找类似的模式
  • “显式”关键字对返回值优化 (RVO) 有何影响?

    以下代码工作得很好 显示 RVO struct A A int cout lt lt A A n constructor A const A cout lt lt A A const A n copy constructor A foo r
  • DataGridView 捕获用户行选择

    我在处理选择时遇到问题DataGridView 我的网格视图包含一个金额列 表单上有一个文本框 应显示所选网格视图行的总数 因此 我需要在用户选择 取消选择 gridview 行时捕获事件并相应地计算 添加 减去 金额 我找到了两种方法 使
  • 如何使用 Ioc Unity 注入依赖属性

    我有以下课程 public interface IServiceA string MethodA1 public interface IServiceB string MethodB1 public class ServiceA IServ

随机推荐

  • 在 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堆分配不小于必要的数量 我怎样才能知道到底分配了多少