摘要: 一、new和delete C语言提供了malloc和free两个系统函数,完成对堆内存的申请和释放。而C++则提供了两个关键字new和delete; 1.1 规则 new/delete是关键字,效率高于malloc和free。 配对使用,避免内存泄漏和多重释放。 避免交叉使用,比如malloc申请空 阅读全文
posted @ 2019-11-08 19:56 落地成霜 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 主要区别如下: 一、空间分配: 1.堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。PS:java中都是系统GC,程序员无法进行GC。 2.栈(操作系统):由操作系统自动分配释放,存放函数的参数值,局部变量值等。操作方式与数据结构中的栈相类似。 二 阅读全文
posted @ 2019-11-08 19:45 落地成霜 阅读(2426) 评论(0) 推荐(0) 编辑
摘要: 1、分配方式 静态分配: 静态区(全局区),分配全局变量、静态变量优先于main函数。 动态分配: (1)自动分配:栈区(2)手动分配:堆区,(malloc,free) (new,delete) 2、内存的4种分区 一个由C编译的程序占用的内存大致分为以下几部分: 栈区(stack): 动态分配。由 阅读全文
posted @ 2019-11-08 17:42 落地成霜 阅读(385) 评论(0) 推荐(0) 编辑