[C++基础]C++内存存储

C++程序内存分为全局数据区、代码区、栈区、堆区。成员函数存于代码区,静态成员变量在全局数据区,非静态成员变量在对象创建时分配。静态成员函数可以直接由类调用,非静态成员函数通过对象调用,依赖this指针。成员函数可在类外定义,inline函数用于优化。
摘要由CSDN通过智能技术生成

用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分配存储单元,能否只用一段空间来存放这个共同的函数代码段,在调用各对象的函数时,都去调用这个公用的函数代码。
显然,这样做会大大节约存储空间C++编译系统正是这样做的,因此每个对象所占用的存储空间只是该对象的数据部分(虚函数指针和虚基类指针也属于数据部分)所占用的存储空间,而不包括函数代码所占用的存储空间

 C++程序的内存存储通常分为五个区:

一般分为5个区,编译链接之前的内存分配就是静态内存,程序运行之后的内存分配就是动态内存

  •  全局数据区(data area):存放全局变量,静态数据
  • 字符串常量区:
  •  代码区(code area):存放所有类成员函数和非成员函数
  •  栈区(stack area):放在局部变量、函数参数、返回数据、返回地址等
  •  堆区(heap area)(即自由存储区):一般由程序员分配释放malloc/new,free/delete,若程序员不释放,程序结束时由系统释放。

根据这个解释,我们可以得知在类的定义时,类成员函数是被放在代码区<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值