㈠ 静态存储和动态存储的区别
1. 静态内存
静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源。
程序中的各种变量,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用完毕时,系统会
自动释放所占用的内存空间。
变量的分配与释放,都无须程序员自行考虑。
基本类型,数组
2. 动态内存
用户无法确定空间大小,或者空间太大,栈上无法分配时,会采用动态内存分配。
处理器不工作,电脑什么都做不了。
处理器的工作就是处理指令(多条指令就构成一个程序)。
处理器从内存中取指令集(程序)。
问题是如果断电的话,内存中的指令就会丢失。因而内存归类为“易失性”介质。
所以我们要把程序、数据存储在不易失性的介质中,比如硬盘和光盘。
㈡ 顺序表的静态存储与动态存储有什么区别
char
sz[5];就是静态的
char
*psz
=
new
char[5]就是动态的
静态的5一定要试常数不能使变量,而动态的则可以是随便的,可以是表达式也可以是常量或变量
因为静态的是编译完就分配好的,而动态的是在运行过程中才确定大小的;
比如我在程序中写char
sz[5];那么运行过程中就无法改变这块内存,分配大小从开始到运行结束都始终是不变的
而如果我在程序中写
int
i;
cin
>>
i;
char
*psz
=
new
char[i];
程序开始是没有分配大小的,因为这个值是未知的,等到我输入数值,他才知道该分配了多大,而你不能这样写
int
i;
cin
>>
i;
char
sz[i];
这样写是错误的,他会警告中括号里面的数字不是常数
而像这样的临时分配的内存必须要释放掉(c++中用delete而c中则是用free())
㈢ 在C语言中,什么是动态存储,什么是静态存储
动态存储是auto关键字,例如我们定义的int a; 默认就是动态存储,具体应该是 auto int a;一般是用于函数参数,局部变量,超出作用域范围会失效,变量产生在动态存储区
静态存储时static关键字,例如,我们定义一个 static int a; 就是存储在静态存储区,相当于一个全局变量
一楼的理解出现了问题
㈣ 什么是动态存储什么时候用
存储器分为内存和外存
内存又分为静态存储和动态存储
动态存储就是指内存条(这只是我的个人意见)
当你的电脑运行时,硬盘中的信息就会传到内存条中,然后再传给CPU处理。也就是说当你的电脑打开后,你的动态存储器已经开始在用了。
举个例子:
硬盘就相当于冰箱,内存条就相当于切菜用的案板,CPU就相当于菜刀。要完成某向程序就如同:把材料从冰箱里拿出来,再放到案板上,用刀完成。你所说的那个动态存储就是案板,是临时存放你当前打开的程序的。
㈤ 什么是静态存储区和动态存储区啊
1. 全局变量和静态数据放在静态存储区,生命周期为从申请到程序退出。因此局部变量若定义为static,则存储在静态存储区,否则存储在函数的栈内,生命周期为本函数内。
2 动态存储放自动变量和局部变量
㈥ 动态存储区与静态存储区的区别
我理解吧,这个动态跟静态主要是针对指针而言的。而且对于单个变量来说,动态跟静态的概念体现的不是特别清楚,下面主要介绍数组吧。
如果你声明一个数组int a[100],那么这个数组的大小就是100,在内存中的位置也固定,如果后来发现数组不够大,你就只能重新定义一个更大的数组,而不能直接改变数组a的大小。这就是静态存储。
如果你声明一个指针int *p,一开始你想开辟一个100的数组,就写p = new int[100],后面发现100不够大,你可以先delete []p,把原来的空间释放掉,然后让p = new int[200],p就会指向一个大小为200的数组,这个数组的大小以及在内存中的位置可以根据需要不断变化。这就是动态存储。
㈦ 什么是动态存储结构,简明明了说明一下,。谢谢。
链表就是动态存储结构,不仅在尾部可以增加数据,在中间位置也可以任意增加和删除!
线性表的链式存储结构,简称链表,是用一组任意的存储单元(这组存储单元可以是连续的,也可以是不连续的)存储线性表中的数据元素。
因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。
由分别表示a1,a2,…,an,
的n
个结点依次相链构成的链表,称为线性表的链式存储表示,由于此类链表的每个结点中只包含一个指针域,故称为单链表或线性链表。
㈧ 内部动态存储空间是什么意思
运存相当于内存,容量与速度成正比
nand是用来存放手机操作系统的,不被用户使用
㈨ 如何实现动态存储
数组的大小必须事先直接或间接的给定,否则编译时就会出错!
你可以用数组指针和结构体指针实现动态分配内存,例如:
int size;
size=strlen(arr);//假设arr是一个长度暂时未知的字符串,也可以用sizeof计算
然后就可以用malloc函数给指针分配内存。
你的意思是接收一个数据,你先测它的大小然后再为其分配相同大小的空间存储 以节约内存?
这个实在不好实现,因为这就像是“捕风捉影”!接收来的数据也得先储存起来才能测它的大小啊!