动态内存管理
- 动态内存管理是什么
- 动态内存管理,是操作系统允许程序员自由开辟地址空间,用户可以自由的申请,释放空间,来存放自己数据,但是用户自己申请的空间要自己来进行释放。它不像数组,静态内存那样,需要在程序运行之前就分配好内存空间。可以在程序运行时根据所需要的内存大小来自由分配。如果用完之后不合理释放,如果申请的过多而不释放,会导致内存空间不足,而导致程序崩溃。
- C/C++定义了四个内存区间,分别为代码区,全局变量和静态变量区,局部变量区,即栈区。动态存储区,即堆区。
- 通常定义变量时,编译器知道这个变量的类型,以及大小。系统在运行时,可以在适当时候为这个变量开启空间。这种分配内存的方式为静态存储分配。有些操作对象需要在运行时期才能确定类型以及大小。这时编译器就不知道要给这个对象创建多大的内存了,开多了浪费空间,开少了不够用,造成越界访问。这时就需要程序在运行时期来为这个对象动态的分配空间,需要多少给多少。这时就有了动态的存储内存的方法。这个方法就叫做动态内存管理。动态分配的空间都在堆上进行。
- 为什么要有动态内存管理
- 不需要预先分配内存,根据具体对象大小分配。空间的大小可以根据程序的具体需要自行改变所需要内存大小。不会像静态分配那样,分配固定空间,导致的空间浪费以及空间不足等问题,当然除非对象所需空间比较确定。栈的空间比较小。堆的空间比较大。并且一部分空间用完之后可以进行释放,释放之后又可以进行申请,可以重复的使用有限的资源。
- 如何使用动态内存管理
-
<