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

问题描述

关于动态存储与静态存储的区别
什么时候要用到动态存储呢?它在用的时候还要指定大小,和静态分配区别在哪呢?

解决方案

运行的时候若由用户指定了一个大小n,程序接下来就可以这样分配int *arr = (int *) malloc ( sizeof(int) * n );

解决方案二:
编译的时候无法确定大小的,只能用动态存储。
另外,程序中可能使用,也可能不使用的存储,用动态存储可以提高性能。

解决方案三:
我是说编译时无法确定大小。而不是说无法确定大小。
malloc中指定变量,而变量来自用户的输入,这种情况编译的时候就没法确定大小。

解决方案四:
动态分配是运行时,比如程序运行的时候,用户输入一个值,程序根据输入的值分配对应大小的空间。而静态分配是程序编译的时候就指定了大小。

解决方案五:
你的数组定义多大呢?
C不允许你写
int arr[n]; //如果n是变量

解决方案六:
http://blog.csdn.net/evankaka/article/details/44457765
栈,堆,全局,文字常量,代码区总结

解决方案七:
http://codepad.org/1Ko6dHSj

In function 'int main()':
Line 3: error: ISO C++ forbids variable-size array 'a'
compilation terminated due to -Wfatal-errors.
你的代码没法编译的。

时间: 2024-11-05 17:21:40

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

(五十九)自动存储、静态存储、动态存储

自动存储: 函数内部定义的常规变量,被称为自动变量,这意味着他们在所属的函数被调用的时候自动产生,在该函数结束时消亡.   自动变量是一个局部变量,作用域为包含他的代码块,比如int main(){}中定义的int a; 在int abc(){}这个函数中就不能用.   自动变量通常储存在 栈 中,这意味着执行代码块时,其中的变量将依次加入到 栈 中,而离开代码块时,将按相反的顺序释放这些变量,这被称为后进先出(LIFO),因此,在程序执行的过程中,栈将不断的增大和缩小.   静态存储: 静态存

malloc,colloc,realloc内存分配,动态库,静态库的生成与调用

 1.在main方法里面直接定义一个非常大的数组的时候,可能会出现栈溢出:错误代码演示: #include<stdio.h> #include<stdlib.h> void main() {     int a[1024 * 1024];     int num = 100;     system("pause"); } 错误截图: 2.在定义数组的时候要定义数组的长度,否则会出现错误.(特例:在GCC编译器下,不会出现错误(因为标准不一样)). 3.打印并

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

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

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

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

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的区别分析_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它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设

C++中静态存储区与栈以及堆的区别详解_C 语言

学习c++如果不了解内存分配是一件非常可悲的事情.而且,可以这样讲,一个C++程序员无法掌握内存.无法了解内存,是不能够成为一个合格的C++程序员的.一.内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区.堆区和栈区.他们的功能不同,对他们使用方式也就不同.静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.它主要存放静态数据.全局数据和常量.栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算

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

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