数据结构动态分配存储空间?c语言动态数组如何扩充空间

精选笔记 bchgfjyf56547 2024-04-19 20:06 10 0

一、动态数据结构和静态数据结构各有什么特点

(1)数据结构也叫信息结构,讨论的是数据的组织问题.而我们常用的整型.浮点型等类型的数据,都属于静态数据,他们的存储空间在程序执行过程中不能加以改变,因此被称为静态数据结构。所以静态数据结构的特点是由系统分配固定大小的存储空间,以后在程序运行的过程中,存储空间的位置和容量都不会再改变。(2)动态数据结构不确定总的数据存储量,而是为现有的每一个数据元素定义一个确定的初始大小的空间,若干个数据元素分配若干个同样大小的空间;当问题的数据量发生变化时,数据的存储空间的大小也发生变化。如果数据量增加,就重新向系统申请新的空间;如果数据量减少,就将现有的多余的空间归还给系统。

二、程序中动态分配的内存存放在哪个区域

程序中动态分配的内存存放在堆内存区域。

叫“堆”。c语言:char*p1;//若是全局量,则在全局未初始化区,若是局部量,则在栈中。p1=(char*)malloc(10);//分配得来得10字节的区域在堆区。

c++语言:用 new分配,用 delete释放,在堆区。用malloc分配,用 free释放,在类似堆区的自由存储区。堆不同于栈,它的数据结构并非由系统(无论是机器系统还是操作系统)支持,而是由函数库提供的。

直接方式:

当时多道程序技术还没出现,存储器的可用空间一般是给定的。那时程序员在编程序时或编译程序对源程序进行编译时,使用实际的存储器地址,这种分配方式使用户与计算机内存直接打交道。

系统资源在某一时刻为一个用户所独占。当多道程序出现时就使用户感到极不方便,因为用户要自己做主存的分配工作,而且内存不止存放一个作业,这要求用户必须知道每一个作业放在主存的什么地方,这无疑增加了用户的负担,况且存储空间的利用率也相当低。

三、c语言动态数组如何扩充空间

c语言动态数组扩充空间,主要是利用动态存储分配库函数来实现的,常用的有malloc函数和calloc函数。

malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。

例如:

char*x;

x=(char*)malloc(10);//x就指向了包含10个字符单元的存储空间。

扩展资料:

函数定义

其函数原型为void*malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。

如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。

参考资料来源:百度百科-malloc函数

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

1.静态内存

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

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

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

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

基本类型,数组

2.动态内存

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

处理器不工作,电脑什么都做不了。

处理器的工作就是处理指令(多条指令就构成一个程序)。

处理器从内存中取指令集(程序)。

问题是如果断电的话,内存中的指令就会丢失。因而内存归类为“易失性”介质。

所以我们要把程序、数据存储在不易失性的介质中,比如硬盘和光盘。