C++ 对象与结构内存开销

标签 c++ arrays memory struct

我需要为图像处理创建非常大的 RGB 值数组。将对它们执行的实际操作很简单——只是正交投影以查看两种颜色的相似程度——但每一位都对内存很重要。我正在考虑将图像存储为指向其中包含 3 个字符的结构的双指针,我认为这是最有效的内存方式,但我知道通常建议使用包装类。问题是创建类与结构以及使用某种包装器与使用双指针的内存开销是多么微不足道。

最佳答案

绝对没有区别

class X
{
  public: 
     T1 x;
     T2 y;
     T3 z;
}

struct X
{
     T1 x;
     T2 y;
     T3 z;
};

如果你给类添加虚函数,是的,它会添加到存储中。但是没有其他东西会在 classstruct 之间产生任何区别(事实上,在 struct 中也可以有虚拟成员——尽管这是典型的通过仅针对类的成员函数和(非平凡的)构造函数来区分 structclass

关于C++ 对象与结构内存开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34191113/

相关文章:

c++ - 在C++中将字符串转换为char数组

c++ - 使用 scanf_s 获取字符串值的问题

javascript - jQuery 切片负索引不起作用

ios - 具有许多图像的 UITableView 内存使用率高

ios - 使用 Xcode Instruments 查看指针处的非僵尸对象历史记录

c++ - 模板的多态使用

arrays - 如何在 Perl 中将数组值拆分为新的单独数组?

C 数组 char 与数组 int 比较

java - Java使用的内存多于堆大小(或正确大小的Docker内存限制)

c++ - 打印成员函数地址的最简单方法是什么?