C++回顾(基础)(01)

(第一篇)

目录

前言

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释放堆区数据,注意数组释放的规则;

相关推荐
未来之窗软件服务1 小时前
Go 利器 GoReSym:剥离符号恢复 Go 二进制元数据—东方仙盟
开发语言·golang·仙盟创梦ide·东方仙盟
如意猴1 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
朝朝辞暮i1 小时前
C++ 第 32 课:main()、rclcpp::init()、spin()、shutdown()
开发语言·c++·算法
汉克老师2 小时前
GESP2026年9月认证C++一级( 第三部分编程题(1、新龟兔赛跑))精讲
c++·gesp·小学生·学c++编程
旋生万物2 小时前
螺旋角分布的功率谱分析:多窗谱 + FDR 校正
开发语言·python
sunoo-2292 小时前
【ARM嵌入式学习笔记第十天】i.MX6ULL eLCDIF控制器驱动RGB LCD全解析(硬件原理+寄存器配置+裸机代码)
arm开发·笔记·学习
沫璃染墨2 小时前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
时间的拾荒人2 小时前
Qt 窗口系统详解:从菜单栏到对话框的完整指南
开发语言·qt·面试
wuminyu2 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++