动态内存与静态内存的区别

1. 静态内存

静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源。

程序中的各种变量,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用完毕时,系统会

自动释放所占用的内存空间。

变量的分配与释放,都无须程序员自行考虑。

eg:

基本类型,数组

 

2. 动态内存

用户无法确定空间大小,或者空间太大,栈上无法分配时,会采用动态内存分配。

 

3. 区别

a) 静态内存分配在编译时完成,不占用CPU资源; 动态内存分配在运行时,分配与释放都占用CPU资源。

b) 静态内存在栈(stack)上分配; 动态内存在堆(heap)上分配。

c) 动态内存分配需要指针和引用类型支持,静态不需要。

d) 静态内存分配是按计划分配,由编译器负责; 动态内存分配是按需分配,由程序员负责。

 

 

时间: 2024-10-24 03:49:34

动态内存与静态内存的区别的相关文章

内存机制-关于动态存储与静态存储的区别

问题描述 关于动态存储与静态存储的区别 什么时候要用到动态存储呢?它在用的时候还要指定大小,和静态分配区别在哪呢? 解决方案 运行的时候若由用户指定了一个大小n,程序接下来就可以这样分配int *arr = (int *) malloc ( sizeof(int) * n ); 解决方案二: 编译的时候无法确定大小的,只能用动态存储.另外,程序中可能使用,也可能不使用的存储,用动态存储可以提高性能. 解决方案三: 我是说编译时无法确定大小.而不是说无法确定大小.malloc中指定变量,而变量来自

ORACLE 动态注册和静态注册的区别(转)

1, oracle 10g 用netca方式建立的都默认为动态注册方式2,如果想改为静态注册的方式则在listener.ora 中加入如下内容即可 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = JEFF ) (OR

动态路由与静态路由的区别

    静态路由 静态路由是指由网络管理员手工配置的路由信息.当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息.静态路由信息在缺省情况下是私有的,不会传递给其他的路由器. 当然,网管员也可以通过对路由器进行设置使之成为共享的.静态路由一般适用于比较简单的网络环境,在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息. 动态路由 动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际实际情况的变化适时地进行调整. 动态路由

【最近面试遇到的一些问题】JSP中动态INCLUDE与静态INCLUDE的区别

动态INCLUDE在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解析后在和主页面放到一起显示: 静态INCLUDE在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的included.htm中有什么,我的任务就是把你包含并显示,其他的一概不管 jsp:include是先编译一下included.jsp文件,然后再包含 先编译,后包含 @ include是先把文件包含就来,然后统一编译 先包含,后编译

JSP下动态INCLUDE与静态INCLUDE的区别分析_JSP编程

动态INCLUDE     用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数. 静态INCLUDE    用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>  ===============

JSP中动态include与静态include的区别介绍_JSP编程

动态INCLUDE 用法:<jsp:include page="included.jsp" flush="true" /> 说明:它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数,先编译之后再进行处理. 原因:1.静态include的结果是把其他jsp引入当前jsp,两者合为一体. 2.静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设

动态网站与静态网站几个明显的不同

动态网站与静态网站的区别 程序是否在服务器端运行,是重要标志.在服务器端运行的程序.网页.组件,属于动态网页,它们会随不同客户.不同时间,返回不同的网页,例如ASP.PHP.JSP.CGI等.运行于客户端的程序.网页.插件.组件,属于静态网页,例如html页.Flash.JavaScript.VBScript等等,它们是永远不变的. 静态网页和动态网页各有特点,网站采用动态网页还是静态网页主要取决于网站的功能需求和网站内容的多少,如果网站功能比较简单,内容更新量不是很大,采用纯静态网页的方式会更

C#中如何动态开辟大的内存区域?

问题描述 我要开辟一个10G大小的内存区域给系统保存BMP文件使用,不想频繁分配和回收内存.10G内存算好了给100个图片使用,轮询使用,程序结束时一起释放掉.C++中可以按照BYTE分配内存,C#中应该如何写呢? 解决方案 解决方案二:你牛B,要开10G内存区域!!!!!!解决方案三:能不能1.使用RamDisk内存模拟硬盘的软件,操作在此内存盘上,实现提高性能2.三星951PCISSD,理论性能是DDR3内存处理速度的三分之一,速度在1000M~1500M之间3.INETLPCISSD,价格

内存DDR2与DDR3的区别

  目前我们使用的电脑内存主流都是DDR3内存,DDR4内存已经处于研发阶段,目前已经成功,预测2014年全面量产取代DDR3内存,今天有网友问了编辑这样一个问题:DDR2与DDR3的区别?为什么现在DDR2内存比DDR3还贵,哪个好?如果我们对比DDR3与DDR2内存参数我们很显然可以发现目前主流的DDR3内存更好,DDR2只是上一代产品.目前新生产的主板也都是支持DDR3内存,DDR2内存只适合一些早一两年的老电脑主板当中使用. 那么为什么DDR2内存性能不如DDR3,价格却更贵呢?两者有什