【问题标题】:Size of instance of class in c++ [closed]C ++中类实例的大小[关闭]
【发布时间】:2019-12-20 19:44:33
【问题描述】:

我正在尝试找到一种正确的方法来测量 c++ 中对象的大小。因为以前我使用的是 Java,所以我一直使用the following library,它递归地迭代对象的引用并以 KB 或 MB 为单位计算大小。我还看到可以使用 sizeof,但是,这不适合我,因为对于一个对象,它总是返回相同的大小,无论其中存储的数据如何。您能否提供一些信息或库来测量对象的大小以进行性能测试,或者如果我在 C++ 中被误认为 sizeof,请向我解释一下?

编辑: 我正在尝试测量类实例的大小。 我正在测量一个包含数组的类的实例。无论数组大小如何,sizeof 运算符都会返回 24 作为结果。我正在尝试比较两种方法两种类型的结构并报告与第二种结构的尺寸节省情况,或者实际比较哪种方法导致更大的尺寸。

【问题讨论】:

  • 会不会是你用错了sizeof()?
  • “对象”是什么意思?类或结构的实例?为什么需要尺寸?您要解决的问题是什么?而对于一些特定的“对象”,你期望的尺寸是多少,你得到的尺寸是多少?
  • 是的,正如我提到的,也许我用错了
  • 我怀疑是否有一种工具可以实现您的目标。考虑struct foo { int * f; },无法知道存储在f 的数据是否属于foo,也无法知道f 是指向单个int 还是指向特定大小的数组。要知道对象的大小sizeof 是正确的工具
  • @Someprogrammerdude 我刚刚进行了编辑,希望对您有所帮助

标签: c++ performance-testing


【解决方案1】:

在 C++ 中没有通用的方法来获取一个对象的总内存使用量,包括动态分配的内存(考虑两个对象,它们都有一个指向同一个第三个对象的指针。第三个对象是否应该计算两次?)。

如果您希望跟踪应用程序中的内存使用情况,则可以覆盖 operator new 和/或创建自己的分配器以用于 STL 函数。

【讨论】:

  • 您能否提供一个参考或如何做到这一点的简单用法?感谢您提供有用的答案
猜你喜欢
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多