博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++成员函数的内存分配问题
阅读量:4154 次
发布时间:2019-05-25

本文共 600 字,大约阅读时间需要 2 分钟。

转自:http://blog.csdn.net/caomiao2006/article/details/4934013

1、所有函数代码都在程序编译连接时放在一块,称为代码区,无论是静态还是非静态函数都一样,不存在 "构造一个类的对象(第一次构造对象)时,就会给成员函数(非静态成员函数)分配代码区空间 ",而是程序加载时,所有的代码已在内存空间存在.   只有函数中用到的局部变量才是函数调用时分配空间.
 
2、静态成员函数和成员函数之间根本的区别是:静态成员函数实际上是一个全局函数,不依赖一个类的对象.函数定义时之所以把静态成员函数定义在类中,是一种弱逻辑.     普通成员函数依赖一个类的对象,也就是它有this指针,必须指向一个类的对象.也可以把普通成员函数看做一个普通的函数,在对象调用此函数时,会把对象的this指针当成参数传入到这个函数。
 
3、建立类的对象时只是给成员变量分配空间,析构时也只回收这些空间,代码段里的函数以及静态函数和变量都是在程序结束后回收。
类的静态成员变量只存一份,所以一个类对象的内存中不包含静态成员变量

class base{public:		int a;	static char c;	static void fun()	{		cout<<"a"<

cout<<sizeof(base)<< " "<<sizeof(base1)<<endl;

output: 8 12

你可能感兴趣的文章
Spring MVC中使用Thymeleaf模板引擎
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Mysql复制表以及复制数据库
查看>>
如何使用 systemd 中的定时器
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>