在C ++中创建类的对象时,为成员函数分配的内存在哪里?

时间:2018-06-21 10:21:01

标签: c++ class memory

我只是想知道当我们在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;
}                     

如果成员函数也正在获取内存,那么我认为这将对操作系统造成巨大的内存负担?

1 个答案:

答案 0 :(得分:0)

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

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