关键区别–静态内存分配与动态内存分配
在编程中,有必要存储计算数据。这些数据存储在存储器中。在计算机程序设计中用来存储数据的存储器被称为变量。变量具有特定的数据类型。因此,分配内存来运行程序。内存可以通过两种方式分配。它们是静态内存分配和动态内存分配。内存分配一旦改变,就不能改变内存分配。内存不可重用。但是在动态内存分配中,一旦分配了内存,它就可以更改。静态内存分配和动态内存分配的关键区别在于,在静态内存分配中,一旦分配了内存,内存大小是固定的;而在动态内存分配中,一旦分配了内存,内存大小就可以更改。
目录
1. 概述和主要区别
2. 什么是静态内存分配
3. 什么是动态内存分配
4. 静态和动态内存分配的相似性
5. 并排比较-静态和动态内存分配的表格形式
6. 摘要
什么是静态内存分配(static memory allocation)?
在静态内存分配中,分配的内存是固定的。一旦分配了内存,就不能更改它。记忆不能增加或减少。例如,在C语言中,如果程序员写intx,这意味着变量可以存储一个整数值。字节数取决于计算机。也可以有数组。E、 intx[5];这个x是一个数组,可以存储同一类型的数据序列。它可以存储五个整数元素。它不能存储超过五个元素。在Java中,数组可以创建为,intarr[]=new int[5];数组“arr”可以存储5个整数值,但不能存储更多的整数值。
在静态内存分配中,一旦变量被分配,它们将保持永久性。初始分配后,程序员无法调整内存大小。如果程序员分配了一个可以存储10个元素的数组,则不可能存储超过指定数量的值。如果程序员最初分配了一个可以容纳10个元素的数组,但只需要5个元素,那么内存就浪费了。内存不再需要,但也不可能重用内存。静态内存分配是固定的,但实现简单易行,而且速度也很快。
什么是动态内存分配(dynamic memory allocation)?
有时需要改变内存的大小。所以内存可以动态分配。根据数据元素的**和删除,内存可以增长或收缩。这就是所谓的动态内存分配。
在C语言stdlib.h头文件中,有四个函数用于动态内存分配。它们是calloc、malloc、realloc和free。函数malloc()分配所需大小的字节,并返回一个空指针,指向所分配内存的第一个字节。函数calloc()分配所需大小的字节并将其初始化为零。然后返回指向内存的空指针。free()函数用于重新分配已分配的内存。realloc和函数可以修改以前分配的内存。在使用calloc或malloc分配内存之后,内存大小是固定的,但是可以使用realloc函数增加或减少它们。在Java中,集合可用于动态内存分配。
动态内存分配的主要优点是节省内存。程序员可以根据需要分配内存或释放内存。内存可以在执行期间重新分配,并且可以在不需要时释放内存。动态内存分配也比静态内存分配有效。一个缺点是实现动态内存分配很复杂。
静止的(static)和动态内存分配(dynamic memory allocation)的共同点
- 两者都是内存分配机制。
- 两者都应该由程序员手动实现。
静止的(static)和动态内存分配(dynamic memory allocation)的区别
静态与动态内存分配 | |
静态内存分配是一种分配内存的方法,一旦内存被分配,它就是固定的。 | 动态内存分配是一种分配内存的方法,一旦分配了内存,它就可以更改。 |
修改 | |
在静态内存分配中,初始分配后不可能调整大小。 | 在动态内存分配中,内存可以相应地最小化或最大化。 |
实施 | |
静态内存分配很容易实现。 | 动态内存分配的实现很复杂。 |
速度 | |
在静态内存中,分配执行比动态内存分配快。 | 内存分配比动态内存分配慢。 |
内存利用率 | |
在静态内存分配中,不能重用未使用的内存。 | 动态内存分配允许重用内存。程序员可以在需要时分配更多的内存。必要时他可以释放记忆。 |
总结 - 静止的(static) vs. 动态内存分配(dynamic memory allocation)
在程序设计中,静态内存分配和动态内存分配是两种内存分配机制。静态内存分配和动态内存分配的区别在于,在静态内存分配中,一旦分配内存,内存大小是固定的;而在动态内存分配中,一旦分配了内存,内存大小就可以更改。程序员可以根据应用程序决定内存是静态的还是动态的。
下载静态和动态内存分配的pdf文件
你可以下载这篇文章的PDF版本,并按照引文说明离线使用。请在这里下载PDF版本:静态和动态内存分配的区别