首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 编程交流与学习--More Effective C++的学习-Item M8:理解各种不同含义的new和delete
【标  题】:编程交流与学习--More Effective C++的学习-Item M8:理解各种不同含义的new和delete
【关键字】:--More,Effective,C++,-Item,M8,new,delete
【来  源】:http://blog.csdn.net/swordll80/archive/2006/09/20/1255522.aspx

编程交流与学习--More Effective C++的学习-Item M8:理解各种不同含义的new和delete

new操作符(new operator)和new操作(operator new)的区别。

    string *ps = new string("Memory Management");使用的newnew操作符。这个操作符就象sizeof一样是语言内置的,你不能改变它的含义,它的功能总是一样的。它要完成的功能分成两部分。第一部分是分配足够的内存以便容纳所需类型的对象。第二部分是它调用构造函数初始化内存中的对象。new操作符总是做这两件事情,你不能以任何方式改变它的行为。

    new操作符为分配内存所调用函数的名字是operator new。就象malloc一样,operator new的职责只是分配内存。它对构造函数一无所知。operator new所了解的是内存分配。把operator new 返回的未经处理的指针传递给一个对象是new操作符的工作。

当你的编译器遇见这样的语句:

string *ps = new string("Memory Management");

它生成的代码或多或少与下面的代码相似:

void *memory = operator new(sizeof(string));// 得到未经处理的内存为String对象

call string::string("Memory Management") on *memory; //初始化内存中的对象

string *ps = static_cast<string*>(memory); // ps指针指向新的对象

 补充:作者强调了placement new对应的delete方法是显式调用析构函数。
GUI of C++:【上一篇】
编程交流与学习--More Effective C++的学习-Item M7:不要重载“&&”,“||”, 或“,”:【下一篇】
【相关文章】
  • GUI of C++
  • 编程交流与学习--More Effective C++的学习-Item M9:使用析构函数防止资源泄漏
  • 在VC++6.0 SP6 下配置ICE工程[DEBUG版本]--config ice project(debug) for vc++6.0 with sp6
  • c++Builder 像素操作[原创]
  • 用C++ Builder对图像进行特殊效果处理[转载]
  • 关于 eclipse 3.2 下 开发 C++ 应用程序。
  • Ineffective C++(1):STL容器不仅仅可以保存指针
  • 体验C++中接口与实现分离的技术
  • How to Use Eclipse for C and C++ Development
  • C++ 扩展和嵌入 Python[转载]
  • 【随机文章】
  • 清空文本
  • Quick Report V4.05 FS For D2005 专业版
  • Linux字体安装与简单美化(实践篇)
  • Zope的优点及和Apache+PHP+MySQL的比较
  • Java中的模式 --单态 (部分翻译 double-checked locking break)
  • ACE_Condition_Thread_Mutex源码剖析
  • 关于Mysql 4.1语言问题的完美解决方法
  • 数学之美 系列十 有限状态机和地址识别(转载)
  • strcmp字符串的比较
  • Authorware中TTS引擎的使用
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.