高质量C++/C编程指南-第7章-内存管理(7)[VC/C++编程]
本文“高质量C++/C编程指南-第7章-内存管理(7)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
7.11 new/delete 的利用要点
运算符new利用起来要比函数malloc简单得多,比方:
int *p1 = (int *)malloc(sizeof(int) * length);
int *p2 = new int[length];
这是因为new内置了sizeof、范例转换和范例安全查抄功效.关于非内部数据范例的对象而言,new在成立动态对象的同时完成了初始化工作.假如对象有多个构造函数,那么new的语句也可以有多种情势.比方
class Obj
{
public :
Obj(void); // 无参数的构造函数
Obj(int x); // 带一个参数的构造函数
…
}
void Test(void)
{
Obj *a = new Obj;
Obj *b = new Obj(1); // 初值为1
…
delete a;
delete b;
}
假如用new成立对象数组,那么只能利用对象的无参数构造函数.比方
Obj *objects = new Obj[100]; // 成立100个动态对象
不能写成
Obj *objects = new Obj[100](1);// 成立100个动态对象的同时赋初值1
在用delete释放对象数组时,留神不要丢了标记‘[]’.比方
delete []objects; // 精确的用法
delete objects; // 错误的用法
后者相当于delete objects[0],漏掉了别的99个对象.
7.12 一些心得领会
我熟习不少技术不错的C++/C程序员,很少有人能拍拍胸脯说通晓指针与内存管理(包含我自己).我最初学习C语言时分外怕指针,招致我开辟第一个利用软件(约1万行C代码)时没有利用一个指针,全用数组来顶替指针,实在蠢笨得过度.躲避指针不是办法,后来我改写了这个软件,代码量缩小到原先的一半.
我的经验教导是:
(1)越是怕指针,就越要利用指针.不会精确利用指针,必定算不上是合格的程序员.
(2)必须养成“利用调试器渐渐跟踪程序”的习惯,只有这样才能发现问题的本质.
以上是“高质量C++/C编程指南-第7章-内存管理(7)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |