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;
}
输出结果: