C++中的内存模型

C++中的内存模型

ID:38120907

大小:23.96 KB

页数:3页

时间:2019-06-06

C++中的内存模型_第1页
C++中的内存模型_第2页
C++中的内存模型_第3页
资源描述:

《C++中的内存模型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.C++存储区域我们在程序开发中将C++存储区域分为以下几步:1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由系统回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表3、全局区(静态区)(static),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放4、文字常量区—常量字符串就是

2、放在这里的。程序结束后由系统释放5、程序代码区—存放函数体的二进制代码。2.头文件中常包含的内容函数原型。使用#define或const定义的符号常量结构声明。类声明。模板声明。内联函数。3.头文件管理(防止重复包含)#ifndefCOORDIN_H_#defineCOORDIN_H_//Placeincludefilecontentshere#endif4.多个库的链接C++标准允许每个编译器设计人员以他认为合适的方式实现名称修饰,因此由不同编译器创建的二进制模块(对象代码文件)很可能无法正确链接。在编译链接模块式,请确保所有对象

3、文件或库都是由同一个编译器生成的。5.存储连续性、作用域和链接性(1)存储连续性自动存储连续性:在函数定义中声明的变量(包括函数参数)静态存储连续性:在函数定义外定义的变量和使用关键字static定义的变量动态存储连续性:用new操作符分配的内存,知道delete操作符时释放。(2)作用域局部作用域:只在定义它的代码块中可用。auto,register。寄存器变量是另一种形式的自动变量。CPU访问寄存器中值的速度比访问堆栈中内存快。如果变量被存在寄存器中(声明中只要使用了register),则没有内存地址,不能将地址操作符用于寄存器

4、变量。全局作用域(文件作用域):从定义位置到文件结尾之间都可用。在类中声明的成员的作用域为整个类。在名称空间中声明的变量的作用域为整个名称空间。函数的作用域是整个类或整个名称空间(不能再代码块内定义函数)。(3)链接性内部链接性:只能由一个文件中的函数共享外部链接性:可在文件间共享6.静态变量静态变量有三种链接性:外部、内部、无。外部链接性:在代码块的外面声明(也称为全局变量)内部链接性:在代码块的外面声明,并使用static限定符无链接性:在代码块内声明,并使用static限定符如果文件定义了一个静态外部变量,其名称与另一个文件中

5、声明的常规外部变量相同,则在该文件中,静态变量将隐藏常规外部变量。7.定义和声明定义声明(称为定义)和引用声明(称为声明)。仅当声明将为变量分配存储空间时(即定义声明),才能在声明中初始化变量。8.类的静态数据成员对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。静态数据成员在没有产生类对象时其作用域就可见,即在没有产生类的实例时就可以操作它。静态数据成员和普通数据成员一样遵从public,protected,

6、private访问规则。静态成员变量要实际的分配空间,所以不能在类声明中定义。类声明只声明一个类的“尺寸和规格”,并不进行实际的内存分配,所以在类声明中写成定义是错误的。它也不能在头文件中类声明的外部定义,因为那会造成在多个使用该类的源文件中,对其重复定义。因此静态成员变量应该在类中声明,格式为:staticElemTypeVarName;在使用该静态变量的cpp文件中定义并初始化,格式为:ElemTypeClassName::VarName=**;使用的格式为:ClassName::VarName9.类的静态成员函数普通的成员函数

7、一般都隐含了一个this指针,this指针指向类的对象本身,因为普通成员函数总是具体的属于某个类的具体对象的。通常情况下,this是缺省的。如函数fn()实际上是this->fn()。但是与普通函数相比,静态成员函数由于不是与任何的对象相联系,因此它不具有this指针。出现在类体外的函数定义不能指定关键字static,static是声明性关键字。静态成员函数可以继承和覆盖,但无法是虚函数(1)静态成员函数只能访问静态数据成员和静态成员函数;(2)非静态成员函数可以任意地访问静态成员函数和静态数据成员。10.const变量const全

8、局变量的链接性为内部的,如果出于某种原因希望某个常量的链接性是外部的,则可以使用extern关键字来覆盖默认的内部链接性。externconstintstates=10;(const变量定义时必须初始化)11.函数所有函数的存储持续性

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。