易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++中malloc和new的区别


  1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
  2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free.
  3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete.注意new/delete不是库函数。
  4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存
  new 是个操作符,和什么"+","-","="……有一样的地位。
  malloc是个分配内存的函数,供你调用的。
  new是保留字,不需要头文件支持。
  malloc需要头文件库函数支持。
  new 建立的是一个对象,
  malloc分配的是一块内存。
  new建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间
  malloc分配的是一块内存区域,就用指针访问好了,而且还可以在里面移动指针。
  简而言之:
  new 是一个操作符,可以重载
  malloc是一个函数,可以覆盖
  new 初始化对象,调用对象的构造函数,对应的delete调用相应的析构函数
  malloc仅仅分配内存,free仅仅回收内存
转自:http://tech.ddvip.com/2009-05/1242201392118933.html


相关文档:

C/C++ 日期 时间 time_t与struct tm转换

本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。
关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),cl ......

深入理解extern "C"

一、从C与C++编译连接方式深入理解extern "C"
<1>.C和C++对函数的处理方式是不同的.被extern "C"修饰的变量和函数是按照C语言方式编译和连接的.extern "C"用于实现C++与C及其它语言的混合编程。
<2>.未加extern “C”声明时的编译方式
首先看看C++中对类似C的函数是怎样编译的。
作为一种面向 ......

C语言基本功教程系列(3) 快速的函数调用

C语言基本功教程系列(3) - 快速的函数调用
我又来了,今天坎坎函数调用的问题。函数哪里都有,小的程序一两个函数,大的程序成百上千个函数。即使在游戏的关键循环中,调用几十个函数也是很常见的。所以函数调用代码的质量,在很大程度上影响着游戏的质量。
还是先说最基本的代码风格问题。首先,对于函数的参数(特别是 ......

如何使C,C++编译器都可以调用C写的DLL

    由于C++编译器需要支持函数的重载,会改变函数的名称,与标准C中函数名称不同。然而dll的导出函数通常是标准C定义的,让标准C编写的dll函数定义在C和C++编译器下都能编译通过,通常会使用以下的格式:(这个格式在很多成熟的代码中很常见)
#ifdef __cplusplus extern "C" 

#endif
// ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号