首页
社区
课程
招聘
[讨论]C++的类到底有没占用内存空间
发表于: 2007-10-25 20:23 12995

[讨论]C++的类到底有没占用内存空间

2007-10-25 20:23
12995
收藏
免费 7
支持
分享
最新回复 (29)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
其实我看到在逆向论坛出现这个讨论,就发愣了。
从具体的编译器使用者的角度来说,类是一种数据类型,和int,float....等等在概念上是一致的;同样的,对象也就是一个具体的变量。一个数据类型,哪存在分配内存与否?对象的内存分配,为了代码共享等特性,编译器在实现上采取相应的策略,这并不难理解!
2007-11-2 12:35
0
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
27
人---->只是一个概念,大家脑子里都明白,他有两只手,两只脚,站立行走,会用工具……

人 张三
这时就要为张三留下一张床让他睡,一个立脚之地让他站,还要为他分配一个老婆……

生动 我们老师能这么上课就好了
2007-11-6 13:45
0
雪    币: 242
活跃值: (14)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
28
和编译器的具体实现有关系

C++标准上给出了一段说明,在1.8  The C++ Memory Model中

2 Objects can contain other objects, called sub-objects.
A sub-object can be a member sub-object (9.2), a base class
sub-object (clause 10), or an array element. An object that is
not a sub-object of any other object is called a complete object.

4 If a complete object, a data member (9.2), or an array element
is of class type, its type is considered the most derived class,
to distinguish it from the class type of any base class subobject;
an object of a most derived class type is called a most derived object.

5 Unless it is a bit-field (9.6), a most derived object shall have
a non-zero size and shall occupy one or more bytes of storage. Base
class sub-objects may have zero size. An object of POD 4) type (3.9)
shall occupy contiguous bytes of storage.

因此在实现上,即使是一个空的类对象,至少也要分配1个字节的空间,而且不同的编译器对此有不同的实现,如下:

#include <iostream>
using namespace std;

class X
{
};

int main(int ,char **)
{
	X x;
	cout << "size of X:" << sizeof (X) << endl;//VC中值为1,BCB中值为8
	cout << "size of x:" << sizeof (x) << endl;//VC中值为1,BCB中值为8

	cout << "all right!" << endl;
	cin.get();
	return 0;
}
2007-11-6 17:17
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
为啥不反编译一下?看看它具体的空间占用,以及代码实现。。。。
2017-4-16 12:55
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
31
          类只要在程序里用到,编译器就会编译进去    就会占空间    怎么会不占空间           
小白一个      看不懂        也不懂这个问题的点在哪。。  。   
2017-4-20 10:01
0
游客
登录 | 注册 方可回帖
返回
//