静态和动态内存分配是将内存分配给计算机程序的两种方式。这两种内存分配之间的根本区别在于,静态内存分配在程序员编译程序时分配内存,动态内存是程序员执行程序时分配内存。
内存分配是将内存地址分配给程序(指令和数据)的任务。尽管内存分配是硬件操作,但操作系统控制分配地址空间的任务。
内存分配是执行程序所需的强制过程。因此,如果要执行程序,则必须首先将其放置在计算机的内存中,处理器可以从那里读取和执行它。
静态内存分配是一种计算机在编译过程中将内存分配给程序的技术。分配的内存不能改变大小,即不能增加或减少分配的内存大小。
一旦分配给程序,静态内存将保留在整个程序中,即从程序被编译的那一刻到程序完成其执行的那一刻。程序完全执行后,内存被解除分配,并且可以将其分配给其他实体。此技术将内存从堆栈存储分配给程序。
在静态内存分配中,程序执行得更快,因为内存在执行之前分配给程序。但是很难确定运行程序需要多少内存,因此大多数情况下,内存分配决策是在运行时做出的。
在动态内存分配中,内存在运行时分配,即当程序员执行程序时 - 此技术从堆存储中分配内存。
动态分配的内存可以在程序执行期间随时释放。甚至分配的内存也可以调整大小,即您可以增加或减少内存大小。此方法更有效,因为它根据程序的需要提供内存空间。
由于内存是在运行时分配的,因此与静态内存分配相比,这使得执行速度稍慢。
静态内存分配和动态内存分配之间最基本的区别在于静态内存是在编译程序时分配的。而动态内存是在执行程序时分配的,即在运行时分配的。
通过静态分配分配的内存在整个程序中保持静态,即从编译到执行。通过动态分配分配的内存可以在程序执行期间随时分配和取消分配。
在静态内存分配中,内存已在编译时分配。因此,它减少了运行时间并使执行速度更快。但是,内存是在执行期间以动态内存分配的,这使得执行速度比静态内存分配慢。
静态内存分配是从堆栈分配的,而在动态内存分配中,内存是从堆中分配的。
将内存静态分配给实体后,无法减小或增加内存大小。相反,在动态内存分配中,我们可以增加或减少实体的内存大小。
静态分配内存是一个简单的过程。动态分配内存是一个复杂的过程。
相比之下,动态内存分配比静态内存分配更有效,因为在动态内存分配中,我们不需要事先知道程序需要多少空间。
我们学习了两种内存分配技术,即静态和动态内存分配。编译程序时发生静态内存分配;但是,动态内存分配发生在执行程序时。动态内存分配优先于静态内存分配,因为无法确定程序执行所需的准确内存。