gpt4 book ai didi

c++ - 类对象成员函数的内存分配

转载 作者:行者123 更新时间:2023-11-27 22:51:47 24 4
gpt4 key购买 nike

对于一个简单的 C++ 程序。

#include <iostream>
#include <string>
using namespace std;

class Student
{
float gpa;
public:
void read()
{
cin>>gpa;
}

void display()
{
cout<<"STUDENT GPA : "<<GPA<<endl;
}
};

void main()
{
Student s1;
}

对于对象s1,必须在主存中分配4个字节。但是查看时,分配的内存略高于4字节,因为成员函数、构造函数和析构函数分配了一些内存。!如何计算所有函数的大小,是否可以通过减少这些额外分配来优化代码。

最佳答案

But when checked, the memory allocated is slightly higher than 4 bytes

正确。

because member functions, constructors and destructors allocate some memory.

不正确。这是因为在您的情况下内存对齐要求,在其他情况下是因为虚函数需要某种形式的表,该表需要一个指向它的指针。构造函数、析构函数和方法的内存成本是一次性支付的,而不是每个对象。

How is the size calculated for all the functions

不是。

and is it possible to optimize the code by reducing these extra allocations.?

当然可以,但这对对象的 sizeof 没有影响。

关于c++ - 类对象成员函数的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36568153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com