C++关于new的使用

C++关于new的使用


new的使用方法:

new的返回值为new创造的对象的地址,示例如下,一般用于函数中需要创造全局变量

int *p=new int(10);

由此我们创造了一个int类型的值,它的值初始化为10,p是这个值的地址。



了解new首先需要了解堆区和栈区。

栈区:由程序管理,存放局部变量,由程序自动释放掉
堆区:由我们自己管理,我们自己创建自己释放,当程序结束时程序会接手释放掉空间。

问题:如下

int *test_f(void)
{
    int a=0;
    return &a;
}

在一个函数中创建一个变量并且返回这个变量的指针,由于这个变量在函数执行完后就被释放了,所以我们返回它的指针并无意义,强行操作它也可能会带来错误


针对上述问题引出了new的使用方式,我们可以使用new创造全局变量,这样就可以返回它的指针了。

代码如下:

#include "iostream"
using namespace std;

int* new_handle(void)
{
    int *p=new int(10);
    return p;
}

int main()
{
    int *p=new_handle();
    cout << "p_val=" << *p <<endl;
    *p=20;
    cout << "p_val=" << *p <<endl;
}

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值