动态内存分配
分配方法
用 new 实现动态内存分配
方法一: 给变量分配
格式: P = new T;
P
-> T* 类型的指针
T
-> 类型
定义: 动态分配出一片大小为 sizeof(T)
的内存空间, 把该内存空间的起始地址赋值给 P
范例:
int* ptr;
ptr = new int;
*ptr = 998;
方法二: 给数组分配
格式: P = new T[N];
P
-> T* 类型的指针
T
-> 类型
定义: 动态分配出一片大小为 N * sizeof(T)
的内存空间, 把该内存空间的起始地址赋值给 P
释放内存方法
用 delete 实现内存释放
格式:
释放变量 delete 指针;
释放数组 delete [] 指针
注意:
只能 delete new 出来的指针, 不然可能会运行时出错
一片空间不可以 delete 多次, 不然可能会运行时异常
内联函数
背景知识: 函数的调用
函数调用时, 参数和返回地址都会被放到栈里
函数执行完毕后, 会从栈里取出返回地址
然后跳到返回地址, 继续执行代码
以上这些是依靠几条指令来完成的
如果函数的代码很多, 那么以上的函数调用开销就显得很小, 显得无所谓了
但如果函数的代码很少, 并且会被多次调用, 则以上的调用开销就显得很浪费了
定义
用来减少调用函数的开销, 不走那几条调用函数的指令了
直接把要调用的函数的代码贴到到调用的地方去
格式
在方法前面加上 inline
关键字
inline string getStr(){//只有一两行函数}
弊端
可执行语句的大小会增大