C++学习
FiveNux
香巴拉甜不辣技术有限公司
展开
-
C++精进之路5:32位系统中的内存地址分布
32位系统中有4G虚拟地址,按大类可以分为内核区和用户区内核区:3G~4G的空间顾名思义,是给系统内核使用的,其地址分配和使用由操作系统自行完成,程序员和用户不需要关心。用户区:0~3G是给用户程序使用的区域,按地址从高到低,又可以分为几个区域1、栈区栈区存储的内容是函数体内使用的变量、程序等内容,在函数调用时系统自动分配栈内存给函数,调用结束后自动释放栈内存。2、堆区堆内存,使用时需要用new或者malloc申请内存,使用完之后必须delete或者free释放内存,否则会导原创 2020-12-15 23:35:57 · 507 阅读 · 0 评论 -
C++精进之路4:引用的用法
一、什么是引用C++中的引用,是变量的别名,使用时必须绑定需要引用的实体, 也就是初始化。对引用的操作与对其绑定的实体的操作是完全等同的,用法示例:int & ref = number;二、引用的用法1、引用作为函数参数存在int swap(int &a ,int &b){ int tmp; tmp = a; a = b; b = tmp;}引用用于代替C语言中的地址传递,是一种没有复制开销的传递...原创 2020-12-15 22:40:28 · 604 阅读 · 0 评论 -
C++精进之路3:new/delete与malloc/free的区别
首先说一下内存异常的一些常用概念:内存泄露:malloc申请堆内存时,没有进行free释放内存,导致内存被占用;内存溢出:因为内存泄露太多,导致内存被用完,就会出现内存溢出的报错,在windows中弹窗内存溢出是挺常见的;野指针:内存free释放后,没有赋值null,指针仍然指向未申请使用的内存地址,访问野指针会导致无法预期的数据修改,可能导致程序崩溃;内存踩踏:访问越界导致腹泻了非目标地址内的数据,常见于循环访问数组时设置循环次数有误,导致访问越界,写入数据将非数组内的变量也覆盖掉了;原创 2020-12-15 01:03:58 · 164 阅读 · 0 评论 -
C++精进之路2:const限定符及其用法
用处定义一种值无法改变的变量,供其他程序使用。它是一个修饰类型的关键字,需要初始化,表示变量在初始化后不再可以改变。const与宏定义的区别1、发生的时间不一样,宏定义发生在预处理,const发生在编译时。2、是否进行了类型转换,宏定义只进行了字符替换,本质上只是别名,没有进行类型检查,编译时可能会出现不可预期的错误;const关键字有类型检查,在编译阶段就能检查出const的错误。在C++中,推荐多使用const、emun替代掉宏定义const修饰指针变量在*前,表示指针可原创 2020-12-15 00:41:11 · 162 阅读 · 0 评论 -
C++精进之路1:C++的命名空间
命名空间的含义使用namespace{}命名的一段内存区域,在区域内的函数、类被限制于该命名空间中使用;命名空间的使用方法1、using编译指令这种方法是非限定名称引用,在头文件中使用using namespace xxx的方法,把空间中的所有实体全部引入,访问空间的实体时就可以将空间中的实体当成通用成员使用;例如 using namespace std ,STL库中的cout cin string map等等所有成员都可以直接使用;这种用法要求使用者对空间中的成员熟悉,否则在定义新的...原创 2020-12-15 00:11:41 · 152 阅读 · 0 评论