【发布时间】:2015-12-09 23:38:32
【问题描述】:
我需要为图像处理创建非常大的 RGB 值数组。对它们执行的实际操作很简单——只是正交投影,看看两种颜色有多相似——但每一位都对内存很重要。我正在考虑将图像存储为指向其中包含 3 个字符的结构的双指针,我认为这是最节省内存的方式,但我知道通常建议使用包装类。问题是创建类与结构以及使用某种包装器与使用双指针的内存开销是多么微不足道。
【问题讨论】:
我需要为图像处理创建非常大的 RGB 值数组。对它们执行的实际操作很简单——只是正交投影,看看两种颜色有多相似——但每一位都对内存很重要。我正在考虑将图像存储为指向其中包含 3 个字符的结构的双指针,我认为这是最节省内存的方式,但我知道通常建议使用包装类。问题是创建类与结构以及使用某种包装器与使用双指针的内存开销是多么微不足道。
【问题讨论】:
完全没有区别
class X
{
public:
T1 x;
T2 y;
T3 z;
}
和
struct X
{
T1 x;
T2 y;
T3 z;
};
如果您将虚函数添加到类中,是的,它将添加到存储中。但在class 和struct 之间没有其他任何区别(事实上,struct 中也可以有虚拟成员 - 尽管通过具有成员函数和(非平凡的)构造函数仅适用于类)。
【讨论】: