首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

类的大小?解决思路

2013-12-02 
类的大小?#include stdafx.hclass A{void fun(){int a}}//这个类的大小怎么解释?int _tmain(int argc,

类的大小?


#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.
我觉得可能是函数对于一个程序来说只是一个符号, 这个符号本身不占任何字节.
只是在编译中起到一个符号标示.
[解决办法]
引用:
引用:
没有成员变量的类就只有一个字节占位

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

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

热点排行