new和delete可以有效、直接的进行动态内存的分配和释放。
运算符new返回指定类型的一个指针,如果分配失败(如没有足够的内存空间)时,则返回0.
如:
1 double *p;
2 p = new double;
3 *p = 3.1; //将值存放在开辟的单元中
系统自动根据double类型的空间大小开辟内存单元,并将地址放在指针p中。
当然,也可以在开辟内存单元时对单元里的值进行初始化。
则,上述代码等价于:
1 double *p;
2 p = new double(3.1);
运算符delete是释放new请求的内存单元。
delete p将指针变量p指向的内存单元释放,指针变量p仍然有效,它可以重新指向另一个内存单元。
new也可以为数组分配内存单元,当释放时,也可以告诉delete数组有多少个。
如:
1 int *p;
2 p = new int[10];
3 delete [10]p; //告诉delete数组有多少个元素,或delete []p;
例子:
1 #include <iostream>
2 #include <cstring>
3
4 using namespace std;
5
6 int main()
7 {
8 char *p = new char[6];
9
10 strcpy(p,"Hello");
11 cout << p << endl;
12 delete[] p;
13 cout << p << endl;
14
15 return 0;
16 }
运行结果:
运行环境:
ubuntu 12.10
gcc版本 4.7.2
原文链接: https://www.cnblogs.com/luciaark/archive/2013/02/16/luciaark.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/78016
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!