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

Where is memory allocated for member function when we create an object of a class in C++?

本文关键字:成员 函数 分配 在哪里 内存 对象 C++ 我们 创建      更新时间:2023-10-16

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

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

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

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