顺序表的静态存储与动态存储有什么区别

2025-03-21 22:32:07
推荐回答(2个)
回答1:

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())

回答2:

1.
静态内存
静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源。
程序中的各种变量,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用完毕时,系统会
自动释放所占用的内存空间。
变量的分配与释放,都无须程序员自行考虑。
基本类型,数组
2.
动态内存
用户无法确定空间大小,或者空间太大,栈上无法分配时,会采用动态内存分配。
处理器不工作,电脑什么都做不了。
处理器的工作就是处理指令(多条指令就构成一个程序)。
处理器从内存中取指令集(程序)。
问题是如果断电的话,内存中的指令就会丢失。因而内存归类为“易失性”介质。
所以我们要把程序、数据存储在不易失性的介质中,比如硬盘和光盘。