C++博客 :: 首页 :: 联系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用链接

留言簿(48)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 397311
  • 排名 - 59

最新评论

阅读排行榜

评论排行榜

尽量不在C++中使用malloc和free,因为它们和new ,delete混用会导致错误发生概率大大增加。

string *stringarray1 =
static_cast<string*>(malloc(10 * sizeof(string)));
string *stringarray2 = new string[10];
第一句为stringarray1分配了容纳10个string对象的空间,但是并没有在内存里创建这些对象,而第二句创建了一个含10个string对象的数组。
释放stringarray1的指针,要free( stringarray1);stringarray=null;释放stringarray2的指针,要用delete []stringarray2;
stringarray2=NULL;malloc和free不涉及对象的构造和析构,只是简单的分配内存!
在c++程序里使用malloc和free没有错,只要保证用malloc得到的指针用free,或者用new得到的指针最后用delete来操作就可以了。千万别
马虎地把new和free或malloc和delete混起来用,那只会自找麻烦。


	
posted on 2008-01-16 20:57 sdfasdf 阅读(2396) 评论(2)  编辑 收藏 引用 所属分类: C++

Feedback

# re: Effective C++学习笔记:条款3:尽量用new和delete而不用malloc和free 2008-01-22 17:38 minidxer
兄弟,发现你的那些文章,在你的CSDN上都已经优先发表了,所以很抱歉动手从首页移掉了  回复  更多评论
  

# re: Effective C++学习笔记:条款3:尽量用new和delete而不用malloc和free 2008-01-23 00:51 eXile
只要是原创的,发在几个blog也无所谓啊,独家不独家的有什么关系呢  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理