在函数声明或定义时,将inline关键字加在函数返回类型前面就是内联函数。
#include <iostream>
using namespace std;
inline int add(int x, int y) {
return x + y;
}
int main(int argc, const char *argv[])
{
int a = 10, b = 20;
int ret = add(a, b);//翻译为int ret = 10 + 20;只适合简单几行代码时使用
cout << ret << endl;
return 0;
}
作用:提高代码执行效率;不需要监理函数调用时的运行环境,不需要进行参数传递,不需要跳转。
在C语言中,如果需要使用堆内存,程序员可以用函数malloc()从堆中分配指定大小存储区域,用完之后必须用free()将之归还系统。如果用完之后没用free()释放,就会造成内存泄露。
malloc()函数的使用比较麻烦,除了需要计算需求内存的大小之外,还必须堆获得的内存进行类型转换。为此C++提供了new和delete两个运算符。
其中p是指针变量,type是数据类型。用法1 只分配内存,用法2 将分配的堆内存初始化为x,用法3分配具有n个元素的数组。分配不成功返回空指针(NULL)
int main(int argc, const char *argv[])
{
int *p, *p1, *p2, *p3;
p1 = new int;//申请int类型的空间
p2 = new int(123);//初始化申请的内存空间为123;
p3 = new int[10];//申请123个int类型的内存空间,此为数组
p = (int *)malloc(sizeof(int));//C语言的方法申请内存,后面必须free释放内存
/*释放内存空间
*当delete p3 写法为释放一个int类型的内存p3[0],其余内存空间未释放,造成内存泄露
* */
free(p);//C语言方法释放内存
delete p1;
delete p2;
delete[]p3;
cout << p1 << " " << p2 << " " << p3 << " " << p << endl;
return 0;
}