`
kmplayer
  • 浏览: 496962 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

条款3:尽量以new和delete取代malloc和free

阅读更多
1,malloc和free带来的问题很简单:
他们对构造函数和析构函数一无所知.

string* p1=static_cast<string*>(malloc(10*sizeof(string)));
注:指向足够放置10个string对象的内存空间,但其中的对象没有被初始化.
free(p1);
注:会释放p1所指向的内存,但不会调用对象的析构函数.

string* p2=new string[10];
delete[p2];

2,企图对new得到的指针free或对malloc得到的指针delete,结果都是未定义.

3,在C++程序中调用malloc和free并没有错,只要你确定new和delete,malloc和free不要混用即可.
分享到:
评论

相关推荐

    Effective.C++.中文第二版.50条款doc文档.chm

    条款3:尽量用new和delete而不用malloc和free 条款4:尽量使用c++风格的注释 第二章 内存管理 条款5:对应的new和delete要采用相同的形式 条款6:析构函数里对指针成员调用delete 条款7:预先准备好内存不够的情况 ...

    Malloc和new区别

    3 ,因此C++ 语言需要一个能完成动态内存分配和初始化工作的运算符new ,以一个能完成清理与释放内存工作的运算符delete.注意ne w/delete 不是库函数。 4 ,C++ 程序经常要调用C函数,而C 程序只能用malloc/free ...

    11_new&delete与malloc&free 之间的关系与区别1

    11_new&delete与malloc&free 之间的关系与区别1

    Effective C++

    条款3:尽量用NEW和DELETE而不用MALLOC和FREE 条款4:尽量使用C++风格的注释 2、内存管理 条款5:对应的NEW和DELETE要采用相同的形式 条款6:析构函数里对指针成员调用DELETE 条款7:预先准备好内存不够的情况 条款8:写...

    深入理解C++中的new/delete和malloc/free动态内存管理及区别介绍

    malloc/free和new/delete的区别 malloc/free是C/C++标准库的函数;new/delete是C++操作符。 malloc/free只是动态分配内存空间/释放空间;new/delete除了分配空间还会调用构造函数和析构函数进行初始化与清理资源。...

    里仁教育详细讲解malloc/free和new/delete

    Malloc()与free()是C++/C语言的标准库函数,new/delete是C++的运算符,它们都可用于申请和释放动态内存。

    C++中new与delete、malloc与free应用分析

    一般来说,在C/C++的面试时,对于new/delete和malloc/free这两对的使用和区别经常被考查到,如果这种基础的问题都答不上来,估计很难过面试了。本文即是对new/delete和malloc/free这两对的使用和区别较为简单的分析...

    Effective c++

    提高编程效率的50条建议 条款1:尽量用const和inline而不用#define 条款2:尽量用而不用 条款3:尽量用new和delete而不用malloc和free 内存管理的建议 设计与说明的建议 继承与面向对象的设计 杂项

    malloc和free的实现

    在VC2008上实现malloc和free,内含注释以及图形解释

    浅谈C中的malloc和free

    浅谈C中的malloc和free

    new与malloc 的区别和用法

    new与malloc 的区别和用法 new与malloc 的区别和用法 new与malloc 的区别和用法 new与malloc 的区别和用法 new与malloc 的区别和用法 new与malloc 的区别和用法 new与malloc 的区别和用法

    C语言实现malloc和free

    用C自己实现malloc和free,需要的可以看下,没实际用处,不过可以了解C的原型原理

    双向链表法实现malloc和free

    自己实现的malloc 和 free 用的双向链表 尽量做了注释

    模拟malloc和free 作业

    定义了一个10M大小的数组,每次分配空间都从这10M中分配,原理是分配的时候空间足够...模拟动态内存分配,模拟malloc和free。 自己的作业,当然也有很多欠缺的地方,比如没有考虑多线程同时调用这类的问题。仅供参考。

    malloc 与new的区别

    C语言提供了malloc和free两个系统函数,完成对堆内存的申请和释放。而C++则提供了两个关键字new和delete;

    C++内存管理详解,new,delete的合理使用

    对应的new和delete要采用相同的形式 下面的语句有什么错? string *stringarray = new string[100]; ... delete stringarray; 一切好象都井然有序——一个new对应着一个delete——然而却隐藏着很大的错误:程序的...

    C语言的malloc和free函数.pdf

    C语言的malloc和free函数.pdf

    C++中malloc与free、new与delete的详解与应用

    C++面试经常会问到关于malloc/free和new/delete的区别,网上有不同版本的解释,这里总结下并加上个人理解和使用。 两者相同点 1.都可以申请动态堆内存。 两者不同点 1.new/delete是C++的操作符,malloc/free是C/...

Global site tag (gtag.js) - Google Analytics