C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用链接

留言簿(8)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

1、 堆内存的作用

      程序在内存中有4个区域,即代码区、全局数据区、栈区和堆区。全局数据区、栈区都是静态分配区域;堆是程序运行时动态使用的一个内存空间,如果要在堆中分配内存空间,必须使用特定的函数和操作符。另外,若不再需要分配的空间则必须释放。

2、 堆内存的申请和释放

      mallocfreenew/deleteC++的运算符,它们都可用于申请动态内存和释放内存,但是malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能够完成清理和释放内存工作的运算符delete

      malloc函数的原型为:

void * malloc(unsigned long);

      参数unsigned long类型的表达式,用来表示需分配的内存单元(单位是字节)数量。函数返回void *型的指针,指向分配内存块的首地址。由于malloc函数返回的地址是void*类型,因此不能直接被使用,所以引用该函数时都必须进行类型转换。

      free的函数原型为:

void free(void *);

      用malloc函数在堆内分配的空间系统不会自动释放,必须由程序设计者在程序中用free函数来释放。

      C++所独有的开辟和释放对内存空间的方法——new修饰符和delete修饰符,newdelete修饰符的操作并不需要头文件的支持,这是C++所独有的new操作要比malloc更为简单,直接说明开辟的类型的数目就可以了,delete使用的时候如果是数组那么必须使用delete[]

3、 实例代码
(未完待续)

想要获得更多内容,可点击:《Visuanl C++代码参考与技巧大全》学习笔记——索引随笔

posted on 2010-02-15 16:51 烟皑 阅读(869) 评论(0)  编辑 收藏 引用 所属分类: 《Visual C++代码参考与技巧大全》学习笔记

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