(第一篇)
目录
前言
1.内存分区模型
1.1程序运行前
1.2程序运行后
1.3new操作符
前言
学习完C语言基础后,可以进入C++的学习了。
C语言和C++的语法有互通之处,C语言就是C++的基础,但是C++相对于C语言又多加了许多内容。所以,对于C++的学习,也必须细致,以便将来做项目的时候可以做到不仅仅是看懂代码,还有知道为什么使用这串代码,以及能不能使用其他的代码实现更好的效果;
1.内存分区模型
1.1程序运行前
代码如下:
(a)在main函数之外创建的变量为全局变量,存入全局区;
(b)我们可以将局部变量,全局变量,静态变量的地址打印出来,地址接近的在同一个区域;
(c)另外还有const修饰的全局变量和常量:
(d)以及字符串常量,全局变量,局部常量等等,可以一一验证;
输出地址如下:
(e)可以画出以下图:
1.2程序运行后
代码如下:
(a)由于在函数中创建变量为局部变量,在栈区存放,当函数执行完毕后就会自动释放,所以尽管传出了局部变量的指针,也会定位不到对应的变量,成为野指针;
(b)如果对局部变量指针进行返回,第一次可能能使用这个变量,因为编译器保留了这个变量,但是下次就会无法找到,出现越界访问的问题;
(c)有关new操作符马上讲到;
1.3new操作符
代码如下:
(a)尽管在函数创建数据,返回指向这个数据的指针,但是由于加上了new操作符,数据在堆区创建,就不会马上释放,所以可以多次打印;
同理,也可以用new开辟数组:
(b)使用new后记得使用delete释放堆区数据,注意数组释放的规则;