C++函数——内联函数、动态内存管理
2023-12-21 22:45:49
内联函数
在函数声明或定义时,将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;
}
作用:提高代码执行效率;不需要监理函数调用时的运行环境,不需要进行参数传递,不需要跳转。
- 注意:、
- inline关键字只是建议编译器做内联优化,编译器不一定做内联
- 内联函数的声明或定义必须在函数定义之前完成
- 一般几行代码适合作为内联函数,像递归函数包含循环switch goto循环不适合做内联函数。
动态内存管理
new和delete函数
在C语言中,如果需要使用堆内存,程序员可以用函数malloc()从堆中分配指定大小存储区域,用完之后必须用free()将之归还系统。如果用完之后没用free()释放,就会造成内存泄露。
malloc()函数的使用比较麻烦,除了需要计算需求内存的大小之外,还必须堆获得的内存进行类型转换。为此C++提供了new和delete两个运算符。
new的用法
- p = new type
- p = new type(x)
- p = new type[n]
其中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;
}
文章来源:https://blog.csdn.net/2201_75441920/article/details/135139509
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!