21.C 语言与 C++在内存分配有什么区别?
C 语言与 C++在内存分配有什么区别?
在C语言中通过malloc和free来分配、释放内存空间;在C++语言中通过new和delete来分配和释放内存空间。
malloc/free和new/delete的主要区别:
1)malloc/free是库函数,new/delete是操作符。
2)malloc是从堆上开辟空间,而new是从自由存储区开辟;(自由存储区是 C++抽象出来的概念,不仅可以是堆,还可以是静态存储区)。
3)new 初始化对象,调用对象的构造函数,对应的delete调用相应的析构函数 ;malloc 仅仅分配内存,free仅仅回收内存。
4)返回值问题,malloc开辟成功返回void*,需要进行强制类型转换,失败返回NULL;new成功返回对象指针,失败抛出异常。
5)使用free之前要判断,要free的指针是!NULL的,使用delete则无须判断。
free()释放的是指针指向的内存!注意!释放的是内存,不是指针!这点非常非常重要!指针是一个变量,只有程序结束时才被销毁。释放了内存空间后,原来指向这块空间的指针还是存在!只不过现在指针指向的内容的垃圾,是未定义的,所以说是垃圾。因此,前面我已经说过了,释放内存后把指针指向NULL,防止指针在后面不小心又被解引用了。非常重要啊这一点!
21.C 语言与 C++在内存分配有什么区别?相关推荐
- c语言链表内存分配失败,链表的C语言实现之动态内存分配
链表的C语言实现之动态内存分配 來源:互聯網 2008-06-01 02:05:07 評論 一.为什么用动态内存分配 但我们未学习链表的时候,假如要存储数量比较多的同类型或同结构的数据的时候,总是 ...
- C语言 :学习动态内存分配
文章目录 C语言动态分配 为什么存在内存分配? 动态内存函数的介绍 `malloc` `free` `free`函数的**作用原理**是: 使用后将指针赋为`NULL` `calloc` 运用一次`c ...
- c语言链表动态分配内存,链表的C语言实现(含动态内存分配)
转自:http://blog.csdn.net/21aspnet/article/details/146968 链表的C语言实现(含动态内存分配) 上 链表的C语言实现之动态内存分配 一.为什么用动态 ...
- C语言中的动态内存分配
大家好,今天简单讲一讲C语言中的动态内存分配. 补充:C程序中的内存块. 在C程序中,通常将内存划分为以下六个区域: (1)内核区域.这块区域是操作系统的,用户不能使用. (2)栈区.主要用于存放运行 ...
- C语言的变量的内存分配
今晚看了人家写的一个关于C语言内存分配的帖子,发现真是自己想找的,于是乎就收藏了... 先看一下两段代码: char* toStr() {char *s = "abcdefghijkl&qu ...
- c语言 malloc_C语言快速入门——动态内存分配
在前面一系列的字符串操作中,我们都是先定义一个固定大小的字符数组,然后根据所需,或拷贝.或连接.或格式化来为这个数组提供内容.固定大小的数组意味着在程序运行期间,数组所占用的内存是确定的(即划分了固定 ...
- c语言紧凑算法的内存分配,C语言(第二章.1)算法与数据结构A.ppt
C语言课件(第二章.1)算法与数据结构A资料 课程设置目的 本课程是非计算机专业学生的技术基础课,通过本课程的学习,应使学生掌握传统的结构化程序设计的一般方法,以C为语言基础,培养学生严谨的程序设计思 ...
- c语言 sysinfo_操作系统:内存分配(C语言 winapi)
//windows 内存分配. windows/visual stdio*/cl xxx.cpp #include #include#include#include#include#include#i ...
- C语言学习笔记---动态内存分配
数组在内存中时存储在连续的位置上,当声明一个数组的时候,编译器就会在内存中分配它所需要的空间,但是有时候还需要使用动态内存为数组分配空间. 比如现在要同统计一个班级学生的成绩,可以申请一个固定 ...
最新文章
- 在Eclipse上搭建Android C开发环境
- 计算机绘图cg,CG专业英语整理
- Sentry异常监控方案部署-前端攻略
- css3中的 @Keyframes
- oracle11g dataguard物理备库搭建
- loadrunner11完整卸载
- MYSQL绿色安装过程
- 页面定时跳转的js和php的代码实现和页面定时刷新
- 动态添加上传控件,并上传文件
- android自定义日历插件,Android自定义日历控件实例详解
- ubuntu中使用ab压测
- #1829 : Tomb Raider(哈希)
- vue-amap 根据地址 查询经纬度
- 爬虫之模拟强智系统登录
- 思科 Packet Tracer 实验六 路由协议基本配置
- [NOIP2008] 立体图-解题报告
- 拉普拉斯算子的疑惑--拉普拉斯算子作用于矢量和定义Hessian矩阵时遇到的问题
- 笔记 | 产品经理必懂的技术(五)
- 这些年正Android - 身在他乡
- 电子商务巨头阿里巴巴正考虑在复杂供应链中使用区块链