静态和动态内存分配是分类内存分配的两种方式。静态和动态内存分配之间的显着差异是静态存储器分配是永久分配内存的技术。因此,它是固定的内存分配。作为反对,动态内存分配是根据要求分配内存的方式,因此是可变存储器分配。
有一些参数,两者在其中不同,但之前,我们必须知道 -
什么是内存分配?
内存分配定义为将内存空间分配给一个或多个进程的方式。通过内存分配物理或虚拟内存空间被分配给程序或进程。
通过内存分配,为程序和进程保留完整或部分计算机内存。内存分配主要被归类为静态和动态内存分配。内存分配是硬件操作,但操作系统和软件应用程序负责管理它。
在这里,在这里,在程序执行之前,确定运行程序所需的准确程序内存是非常困难的。因此,大部分时间内存分配决策在运行时进行。
内容:静态VS动态内存分配
比较图表
比较的基础 | 静态内存分配 | 动态内存分配 |
---|---|---|
缩写为 | SMA. | DMA |
基本的 | 固定类型的内存分配。 | 可变类型的内存分配。 |
发生 | 在计划执行之前 | 在计划执行期间 |
需要空间 | 更多的 | 相对较少 |
内存可重用 | 不存在 | 存在 |
执行速度 | 快速地 | 相对缓慢 |
执行 | 简单的 | 复杂的 |
效率 | 较少的 | 更多的 |
碎片问题 | 不存在 | 存在 |
内存大小 | 不可改变的 | 多变 |
用于 | 大批 | 链接名单 |
西装 | 当有关于内存大小的提前想法时。 | 当没有关于确切的内存大小的想法。 |
实施的 | 通过堆栈 | 通过堆 |
静态内存分配的定义
SMA,静态存储器分配的首字母缩写是在程序执行之前将固定内存空间分配给程序的方式。它也被称为固定内存分配,如在该方法中,一旦分配了存储空间,那么就可以在空间调整或重新分配中进行进一步的改变。
SMA提供预保留存储空间和数据结构堆栈的实现。
在静态存储器分配中,一旦将内存空间分配给过程,那么程序是否在该特定瞬间使用该存储器并不重要。因为分配的内存不能用于任何其他目的。这意味着即使存储器没有使用,那么也在静态存储器分配技术下,分配的内存不能重复使用。
静态存储器分配主要显示适合于对在分配之前已知所需的内存大小的短存储空间的存储器管理。
动态内存分配的定义
DMA,动态内存分配的首字母缩写是将存储空间分配给程序执行时的过程或程序的方式。它有时被称为变量或手动存储器分配,因为当相应的过程不使用内存时,它允许在分配的存储空间中重新分配或调节性。
在程序执行和堆数据结构用于其实现之前,该技术不允许预留内存空间。通过DMA,可以随时发生分配和释放。
与SMA不同,这里允许重新分配甚至释放使用的内存空间。这里有类似Calloc(),realloc()和free()的函数用于在系统中分配,重新分配和释放内存空间。动态内存分配有效管理可用的内存空间。但是,这是其中一个主要缺点记忆泄漏。当某些程序不断使用内存空间但不会释放不使用的空间时,内存泄漏出现,然后在一段时间内,系统运行耗尽内存。
静态和动态内存分配之间的关键差异
- 静态和动态内存分配之间差异的关键因素是静态内存分配是一个固定类型存储空间的内存分配是固定的。相反,动态内存分配是一个变量类型存储空间根据要求变化的内存分配。
- 作为静态内存分配预先分配固定内存空间的机会浪费记忆空间当未使用的很高时。作为通过动态内存分配,根据要求可以增加或减少所需的存储空间,存储空间浪费的机会非常低。
- SMA不提供内存可重用由于其固定性,但在DMA下分配时可以重复使用内存。
- SMA适用于所有这些条件,其中有关于所需内存大小的大小的提前想法。但DMA适用于需要预先知道所需的确切内存大小的条件。
- 静态存储器分配是分配比动态内存分配的存储空间的相对更快的方式。为此的原因是分配固定数量的内存耗时而不是可变分配相同。
- SMA相对较少高效的比DMA为前者提供缺点,如内存浪费和不可重用性。虽然DMA克服了这些缺点,因此更有效。
- 当内存空间永久分配给程序时碎片问题不会发生。但是,当在分配空间时存在可变性,那么即使存在于片段中的可用内存空间也没有用。
- 静态内存分配需要更多内存空间而不是动态内存分配。
结论
因此,据说与动态内存分配相比,静态存储器分配的实现是更简单的。