首页 > 解决方案 > 当我们在 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;
}                     

如果成员函数也在获取内存,那么我认为这会给操作系统带来巨大的内存负担吗?

标签: c++classmemory

解决方案


在执行程序之前,需要将指令加载到内存中,但是由于每个成员函数的代码在实例之间是共享的,因此没有按实例分配。

对于成员变量,情况正好相反,它们需要按实例加载因为每个实例对这些变量都有自己的值。因此,当在执行期间创建新实例时,它会在内存中分配。


推荐阅读