静止的(static)和动态内存分配(dynamic memory allocation)的区别

在编程中,有必要存储计算数据。这些数据存储在存储器中。在计算机程序设计中用来存储数据的存储器被称为变量。变量具有特定的数据类型。因此,分配内存来运行程序。内存可以通过两种方式分配。它们是静态内存分配和动态内存分配。内存分配一旦改变,就不能改变内存分配。内存不可重用。但是在动态内存分配中,一旦分配了内存,它就可以更改。静态内存分配和动态内存分配的关键区别在于,在静态内存分配中,一旦分配了内存,内存大...

关键区别–静态内存分配与动态内存分配

在编程中,有必要存储计算数据。这些数据存储在存储器中。在计算机程序设计中用来存储数据的存储器被称为变量。变量具有特定的数据类型。因此,分配内存来运行程序。内存可以通过两种方式分配。它们是静态内存分配和动态内存分配。内存分配一旦改变,就不能改变内存分配。内存不可重用。但是在动态内存分配中,一旦分配了内存,它就可以更改。静态内存分配和动态内存分配的关键区别在于,在静态内存分配中,一旦分配了内存,内存大小是固定的;而在动态内存分配中,一旦分配了内存,内存大小就可以更改。

目录

1. 概述和主要区别
2. 什么是静态内存分配
3. 什么是动态内存分配
4. 静态和动态内存分配的相似性
5. 并排比较-静态和动态内存分配的表格形式
6. 摘要

什么是静态内存分配(static memory allocation)?

在静态内存分配中,分配的内存是固定的。一旦分配了内存,就不能更改它。记忆不能增加或减少。例如,在C语言中,如果程序员写intx,这意味着变量可以存储一个整数值。字节数取决于计算机。也可以有数组。E、 intx[5];这个x是一个数组,可以存储同一类型的数据序列。它可以存储五个整数元素。它不能存储超过五个元素。在Java中,数组可以创建为,intarr[]=new int[5];数组“arr”可以存储5个整数值,但不能存储更多的整数值。

静止的(static)和动态内存分配(dynamic memory allocation)的区别

图01:内存分配方法

在静态内存分配中,一旦变量被分配,它们将保持永久性。初始分配后,程序员无法调整内存大小。如果程序员分配了一个可以存储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版本:静态和动态内存分配的区别

引用

  • 发表于 2020-10-11 12:09
  • 阅读 ( 1010 )
  • 分类:IT

你可能感兴趣的文章

静止的(static)和动态特性(dynamic characters)的区别

...更受读者的喜爱。这提供了对这两类字符的基本理解。 静止的(static)和动态特性(dynamic characters)的区别 •静态人物在整个小说中没有发生任何变化,从头到尾都保持不变。这些大多是故事中的小人物。 •另一方面,动态角色在...

  • 发布于 2020-10-24 16:55
  • 阅读 ( 784 )

静止的(static)和动态路由(dynamic routing)的区别

静态与动态路由 静态路由和动态路由的区别在于路由条目进入系统的方式。计算机网络中的路由是指在计算机网络中正确地转发数据包,使数据包最终到达正确的目的地的过程。路由主要有静态路由和动态路由两种类型。在...

  • 发布于 2020-10-29 09:42
  • 阅读 ( 438 )

动态(dynamic)和静态ip(static ip)的区别

动态IP是指每次连接到网络时都会发生变化的IP,而静态IP是指无论连接多少次或从网络断开多少次都保持不变的IP。您是否有静态或动态IP地址取决于所述网络的管理员。每次连接到网络时,动态IP都会发生变化;这是一种在连接...

  • 发布于 2021-06-22 11:51
  • 阅读 ( 387 )

静止的(static)和动态平衡(dynamic equilibrium)的区别

...然而,这种情况在机械意义上比化学意义上更有意义。 静止的(static)和动态平衡(dynamic equilibrium)的区别 定义 动态平衡是反应物转化为产物,产物以相等且恒定的速率转化为反应物的平衡。 静态平衡是当反应中的所有粒子都处于...

  • 发布于 2021-06-27 09:49
  • 阅读 ( 565 )

静止的(static)和动态网站(dynamic website)的区别

...站。电子商务网站和社交媒体网站是***站的两个例子。 静止的(static)和***站(dynamic website)的区别 定义 静态网站是一个网站,它的网页是用HTML编码的,每个网页的内容都是固定的,除非经过编辑和重新发布,否则不会改变。***站...

  • 发布于 2021-07-01 01:36
  • 阅读 ( 631 )

静止的(static)和动态ip(dynamic ip address)的区别

静态IP地址和动态IP地址的主要区别在于,静态IP地址是由网络管理员手动分配给设备的固定地址,而动态IP地址是由DHCP服务器自动分配给设备的地址。 计算机网络由各种设备组成,如台式机、笔记本电脑、服务器、路由器和交...

  • 发布于 2021-07-01 03:17
  • 阅读 ( 809 )

静止的(static)和动态哈希(dynamic hashing)的区别

静态哈希和动态哈希的主要区别在于,在静态哈希中,生成的数据桶地址总是相同的,而在动态哈希中,数据桶根据记录的增减而增减。 要在大型数据库中查找数据,不可能搜索所有索引。散列提供了解决这个问题的另一种方...

  • 发布于 2021-07-01 07:30
  • 阅读 ( 332 )

静止的(static)和动态路由(dynamic routing)的区别

静态路由和动态路由的主要区别在于,在静态路由中,管理员手动在路由表中输入路由,而在动态路由中,则根据网络的变化自动查找路由。 路由是确定将数据从源发送到目标的最佳路径的过程。路由器有助于完成这项任务。...

  • 发布于 2021-07-01 17:16
  • 阅读 ( 648 )

静止的(static)和java中的动态多态性(dynamic polymorphism in java)的区别

...行。换句话说,类A的display方法被类B的display方法覆盖。 静止的(static)和java中的动态多态性(dynamic polymorphi** in java)的区别 定义 静态多态是一种多态性,它在编译时收集信息调用方法,而动态多态性是一种多态性,它收集信息以...

  • 发布于 2021-07-01 21:17
  • 阅读 ( 305 )

静止的(static)和动态链接(dynamic linking)的区别

...版本兼容。此外,删除库可能导致程序无法继续工作。 静止的(static)和动态链接(dynamic linking)的区别 定义 静态链接是将程序中使用的所有库模块复制到最终可执行映像中的过程。相反,动态链接是将外部共享库加载到程序中,...

  • 发布于 2021-07-02 00:20
  • 阅读 ( 722 )
h22318874964
h22318874964

0 篇文章

相关推荐