网站首页 网站导航 课程中心
常见问题
您所在的位置:C语言培训 > 常见问题 > C++与C语言在动态存储分配的区别

C++与C语言在动态存储分配的区别

来源:中软卓越 日期:2017-01-03 09:56 人气:
标签:
  1.区别
  C++与C语言在动态存储分配的区别如下:
  (1)C语言使用malloc()函数分配动态内存空间,使用free()函数释放动态内存空间。使用这两个函数时,需要包含"malloc.h"和"stdlib.h"头文件。
  (2)C++使用new运算符分配动态内存空间,使用delete运算符释放动态内存空间。C++中,内存分成5个区:堆、栈、自由存储区、全局/静态存储区和常量存储区。new运算符是在程序运行过程中从堆的自由存储区中为程序分配一块sizeof(类型名)大小的内存空间,并将该内存空间的首地址存储到指针变量中。
  new运算符分配动态内存空间格式如下:
  指针变量=new 类型名
  delete运算符释放动态内存空间格式如下:
  delete 指针变量
  (3)C语言中malloc()函数分配的空间无法得知存放的数据类型,返回的是void型指针,因此应该将其返回类型强制转换。C++中的new运算符可以自动确定对象长度,该对象指向具体的数据。
  示例代码如下:
  [cpp] view plain copy
  #include <iostream.h>
  #include <string.h>
  void main()
  {
  char *aa;
  /*C语言中malloc的使用示例
  aa=(char*)malloc(12*sizeof(char));
  */
  /**以下为C++中new运算符示例***/
  aa=new char[24];
  //给aa赋值
  strcpy(aa,"aaaaaaaaaaaaaa");
  cout<<aa<<endl;
  }
  2.总结
  malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可以用于分配动态内存和释放动态内存。但是由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,malloc()函数无法调用构造函数,而new/delete运算符解决了该问题。

营业执照 版权所有©Copyright 2008-2017,北京中软国际教育科技股份有限公司, All Rights Reserved. ICP备案号:京ICP备14058756号-2

| | 分类导航 | 关于我们