C++;获取整个类的地址和大小 如何在C++中获得整个数据类的内存起始地址,比如ASM“LEA”?我可以得到数据类(包括所有成员)的大小,比如sizeof(main)吗

C++;获取整个类的地址和大小 如何在C++中获得整个数据类的内存起始地址,比如ASM“LEA”?我可以得到数据类(包括所有成员)的大小,比如sizeof(main)吗,c++,class,assembly,C++,Class,Assembly,你可以试试 #include <cstdio> class Main { public: int x; int y; bool xFlag; bool yFlag; } member1, member2, member3, member4; int main() { printf("size of Main = %zu\n", sizeof member1); printf("size of Main = %zu\n", sizeof(

你可以试试

#include <cstdio>

class Main {
  public:
    int x;
    int y;
    bool xFlag;
    bool yFlag;
} member1, member2, member3, member4;

int main() {
  printf("size of Main = %zu\n", sizeof member1);
  printf("size of Main = %zu\n", sizeof(Main));
  printf("address of member2 = %p\n", (void const *) & member2);
}
如何在C++中获得整个数据类的内存起始地址,如ASM“LEA”?< /P> 您不能这样做,因为当您定义一个类时,它是编译器的唯一助手,您当时不分配存储(静态成员除外)。要分配存储,您应该定义一个对象,然后才能获得地址:

main m1; // allocated in data segment
int main() {
    main m2; // allocated on stack

    &m1 ; // take address of m1
    &m2 ; // take address of m2
} 
没有“整个数据类”这样的东西,只有一个。从C++11开始,您可能应该寻找“指向标准布局结构类型对象的指针可以重新解释为指向其第一个非静态数据成员的指针”

我可以得到数据类(包括所有成员)的大小,比如sizeof(main)吗


<>你可以用<代码> SIEZOF(main)< /Cord>< /P> C++中的代码>类< /C>本身没有大小。您只能获得
sizeof(member1)
sizeof(member1)
&member1
。但是,我强烈建议您将名称更改为
object1
等。您似乎混淆了术语类、对象/实例和成员。这只是一个示例。
size of Main = 12
size of Main = 12
address of member2 = 0x80497d4
main m1; // allocated in data segment
int main() {
    main m2; // allocated on stack

    &m1 ; // take address of m1
    &m2 ; // take address of m2
}