c++ - 当我们在 C++ 中创建类的对象时,为成员函数分配的内存在哪里?
问题描述
我只是想知道当我们在 C++ 中创建一个具有 100 个数据成员和 10000 个成员函数的特定类的对象时,内存是如何分配的。
每次我们创建一个对象时,我们为数据成员和成员函数分配内存还是只为数据成员创建内存?
假设我有一堂课:
class A {
int a,b,c,d,e; // ...many more variables;
// ........
// ........
// 100 more variables
public:
int getID(){ return a; }
int perFormSomething(){ return b; }
// ..............
// ..............
// 1000 more functions;
};
int main() {
A *a = new A[10000]; // array of objects of A
return 0;
}
如果成员函数也在获取内存,那么我认为这会给操作系统带来巨大的内存负担吗?
解决方案
在执行程序之前,需要将指令加载到内存中,但是由于每个成员函数的代码在实例之间是共享的,因此没有按实例分配。
对于成员变量,情况正好相反,它们需要按实例加载,因为每个实例对这些变量都有自己的值。因此,当在执行期间创建新实例时,它会在内存中分配。
推荐阅读
- python - 如何用 Python 中的第 95 和第 5 个百分位替换异常值?
- dask - 使用 dask.array.store 到 hdf5 文件时,Dask 分布式 LocalCluster 失败并显示“TypeError:无法腌制 _thread._local 对象”
- html - 具有多个列表项的元素比具有单个列表项的元素推得更高
- c# - Azure DevOps:未找到带有 WikiHttpClient 的 Wiki 页面
- typescript - 反转必需和可选属性
- jquery - 如何在 laravel 的 jquery 中调用 ajax
- laravel - 批量更新多列时出错
- c++ - 使用指针将第一个(2D)数组的值复制到第二个的函数
- elasticsearch - simple_query_string 检查字段是否存在
- python - Python 全局变量名在函数内部被本地处理