读书人

类的大小?解决思路

发布时间: 2013-12-02 12:00:40 作者: rapoo

类的大小?


#include "stdafx.h"

class A
{

void fun(){int a;}
};//这个类的大小怎么解释?

int _tmain(int argc, _TCHAR* argv[])
{
int sizeA;
A a;

sizeA=sizeof(a);///为什么是1,???
printf("the size of class A is %d\n",sizeA);
getchar();
return 0;
}







看了一下对应的汇编,vs 2010 express
;


sizeA=sizeof(a);
0041179E mov dword ptr [sizeA],1 ///怎么直接就给个 1 ?




main()后面执行的这些汇编是?

求大概的科普一下啊...以前学过.win32汇编还是不太懂.


004132E0 push ebp
004132E1 mov ebp,esp
004132E3 sub esp,0F0h
004132E9 push ebx
004132EA push esi
004132EB push edi
004132EC lea edi,[ebp-0F0h]
004132F2 mov ecx,3Ch
004132F7 mov eax,0CCCCCCCCh
004132FC rep stos dword ptr es:[edi]


[解决办法]
没有成员变量的类就只有一个字节占位
[解决办法]
我试了试class中没有任何成员, size也是1.
我觉得可能是函数对于一个程序来说只是一个符号, 这个符号本身不占任何字节.
只是在编译中起到一个符号标示.
[解决办法]
引用:
引用:
没有成员变量的类就只有一个字节占位

那操作系统如何找到这个类呢???

类和操作系统没有关系……编译器怎么寻找其他类就怎么找他……他只是没有成员变量而已,其他和别的类都是一样的。
[解决办法]
没有成员变量的类就只有一个字节占位
[解决办法]
据说是为了区别空类的实例化变量,让其有不同地址

读书人网 >C语言

热点推荐