首页 > 其他 > 详细

没有躲过的坑--成对使用new和delete时要采取相同的形式

时间:2015-11-22 23:31:53      阅读:260      评论:0      收藏:0      [点我收藏+]

new创建类对象与不new区别:

new创建类对象需要指针接收,一处初始化,多处使用
new创建类对象使用完需delete销毁
new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间
new对象指针用途广泛,比如作为函数返回值、函数参数等

而且每个学习C++编程的人都知道成对的使用new和delete,也也就是new申请的内存用delete释放,new []申请的内存由delete []释放。

std::string* first_string = new std::string;
std::string* second_string = new std::string[100];

delete first_string;
delete [] second_string;

这一规则,在实际工作中也应该牢记于心。但是我还是没有躲过这个坑儿。

看看情况吧:

首先使用了typedef进行一些定义;

typedef std::string address_lines[4];

std::string *third_string = new address_lines;

delete third_string

这个就是遇到的坑儿,被表面所迷惑。

所以在Effectice C++中 item16就讲到了:

最好尽量不要对数组形式做typedef动作。

没有躲过的坑--成对使用new和delete时要采取相同的形式

原文:http://blog.csdn.net/wangshubo1989/article/details/49982093

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!