ala*_*ncc 1 c++ variables size
我正在使用 Visual C++ 编写一个应用程序。我写了 CMyObject 类,可能会分配很多 CMyObject 对象的实例,所以我想减少 CMyObject 类的大小。
我能想到的是:
首先,我可以使用以下代码来获取 CMyObject 对象的单个实例使用的准确大小:
CMyObject Object;
// Get the size of memory allocated for CMyObject object
int nSize = sizeof(Object);
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
二、减小CMyObject的大小,我有几个思路:
(1) 可能的话把成员函数改成静态成员函数,因为每个成员函数在CMyObject的实例中都会占用一些空间。
(2) 可能的话把虚成员函数改成成员函数,因为虚成员函数可能占用更多的空间。
(3)去掉不必要的成员变量,减少空间。
(4) 最后,如果(1)、(2)和(3)效果不好,则将CMyObject从class改为只包含一些成员变量的struct,这样就消除了为类的构造函数和析构函数分配的空间.
我的想法正确吗?
谢谢
1. 如果可能,将成员函数更改为静态成员函数,因为每个成员函数都会在 CMyObject 的实例中占用一些空间。
完全不正确。成员函数不存储在对象中。在所有。
2. 如果可能,将虚成员函数更改为成员函数,因为虚成员函数可能占用更多空间。
如果删除继承树中的所有虚拟成员函数,将阻止生成 vtable 指针。那肯定会为您节省几个字节。
3.去掉不必要的成员变量,减少空间。
是的,如果它们是不必要的,无论如何都应该删除它们。
4.将CMyObject从类转化为只包含一些成员变量的结构体,从而消除为类的构造函数和析构函数分配的空间。
再次,不;即使结构在这方面与类不同(它们没有),函数仍然没有存储在对象中。函数是代码,不是数据。