2023-12-29 C++薄弱知识点整理(C++内存部分)(2)

2023-12-31 13:18:56

1.new和delete是运算符,不是函数,所以执行效率比malloc()和free()高

2.new开辟出的空间返回的都是首地址,所以必须用指针接收

? ? ? ? ? ?指针变量 = new 类型(常量);->可以不初始化常量,写做:指针变量 = new 类型;

? ? ? ? ? ?指针变量 = new 类型[表达式];? ? ? ? ? ? ? ? ?//数组

? ? ? ? ? ?指针变量 = new 类型[表达式][表达式];? ? //二维数组

3.delete 删除new出来的指针

? ? ? ? ? ? delete 指针变量;

? ? ? ? ? ?delete[] 指针变量;? ? //删除指向数组的指针

4.内存泄漏:程序中已经动态分配的堆内存未释放或无法释放,造成系统内存浪费,程序速度减慢甚至系统崩溃等后果

? 申请的内存要及时释放

5.变量的四种存储类型(概念不清,不会应用)

(1)auto(自动变量):函数中所有非静态局部变量(c语言中)

? ? ? ? ?[c++中的auto是自动推断类型]

(2)register(寄存器变量)

? ?不属于内存,使用频率高的变量可以设置成寄存器变量

? ?寄存器变量不能定义为全局变量

(3)static(静态变量):全局存在,但是只能在定义其的函数中访问到(作用域范围是从它定义开始往下,上面用不了)

? ?static变量分为(1)全局static变量(2)局部static变量

? ?static变量只能定义一次,不会每次定义都赋初值

(4)extern(外部变量)

? 把全局变量在其他源文件中声明为extern变量,可以将全局变量的作用域扩展到声明的那个文件(对全局变量作用域的扩展)

例:extern int?a;//a是其他源文件的全局变量,在当前这个文件中使用时要加上extern

6.总结

存储类别存储期作用域声明方式
局部static静态块内,使用关键字static
全局static静态文件内部,定义地方下面所有函数外,使用关键字static,
extern静态文件外部所有函数外,引用其他源文件的全局变量时加上关键字extern

??

文章来源:https://blog.csdn.net/m0_65850255/article/details/135285727
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。