c++基础知识

malloc申请空间的值是随机初始化的,calloc申请的空间的值是初始化为0.realloc给动态的空间分配额外的空间,用于扩充容量。

重载实现编译时多态,虚函数实现运行时多态。

volatile 的意思是让编译器每次操作该变ᰁ时⼀定要从内 存中真正取出,⽽不是使⽤已经存在寄存器中的值。
mutable 的中⽂意思是 可变的,易变的 ,跟 constant (既 C++ 中的 const )是反义词
const 函数⾥⾯修改⼀
些跟类状态⽆关的数据成员,那么这个函数就应该被 mutable 来修饰,并且放在函数后后⾯关
键字位置

结构体内存对齐,结构体成员按照声明顺序存储,未特殊说明时,按结构体中size最大成员对齐。

指针和引用的区别:

指针是一个变量,存储地址,引用和原来的变量实质上是一个东西,是原来变量的别名。

引用本质是一个指针,同样会占用4个字节内存。引用在声明时必须初始化为另一变量;指针的声明和定义是可以分开定义的。引用一旦初始化之后就不可以在改变;指针变量是可以重新指向别的变量。不存在指向空值的引用,必须有具体实体;但存在指向空值的指针。

在传递函数参数时,什么时候用指针,什么时候用引用?

需要返回函数内局部变量的内存是用指针。

对栈空间比较敏感时使用引用,引用传递不需要创建临时变量,开销小。

堆,系统中会有一个记录空闲内存地址的链表,当系统收到程序申请时,遍历链表寻找第一个大于申请空间的堆节点。堆是不连续的内存区域;栈是一块连续的内存区域,大小由系统预定好了。

堆,频繁得使用new/delete会造成大量碎片,使程序效率低;栈,结构上是先进后出的栈,进去一一对应,不会产生碎片。

64位的编译环境指针为8个字节,32位的编译环境为4个字节。

define 在编译的预处理阶段起作用,const是在编译、运行的时候起作用。

const常量在定义时必须初始化,之后无法更改。

c++中调用C函数

野指针:指针变量未及时初始化   =====》定义指针变量要及时初始化,要么置空。

悬空指针:指针free或者delete之后没有及时置空 ====》释放后立即置空。

重写和重载的区别:

重写是父类和子类之间的垂直关系,重载是不同函数之间的水平关系。

重写要求参数列表相同,重载则要求参数列表不同,返回值不要求。

inline内联函数:

使用宏定义的地方都可以使用inline函数。

作为类成员接口函数来读写类的私有成员或者保护成员,提高效率。

判断代码大小端存储?

大端存储:字数据的高地址存储在 低地址中

小端存储:字数据的低地址存储在低地址中。

C++中的异常处理方式:

static的用法和作用?

静态存储区存储两种变量:1、全局变量2、static变量。在静态存储区存储的数据默认初始值都是0.因为在静态数据区中,内存中所有的字节默认值都是0x00.

static作用:1、隐藏。所有未加static前缀的全局变量和函数都具有全局可见性。

2、保持变量内容的持久。存储在静态数据区的变量在程序刚开始运行时就完成初始化,而且也是唯一一次初始化。

内存对齐:

1、分配内存的顺序是按照声明的顺序。

2、每个变量相对于起始位置的偏移量必须是该变量类型大小的整数倍,

3、整个结构体的大小必须是里面变量类型最大值的整数倍。

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值