当前位置:首页 > 内存 > 正文

两个栈共享一片连续内存空间时

  • 内存
  • 2024-08-10 09:00:58
  • 3488

一、C语言:栈中内存分配是连续的,堆中内存分配是不连续的,对吗?栈中的内存是操作系统自动分配的,可以理解为连续的。栈中的虚拟内存分配是因为我们malloc空间时,申请的空间大小不同,造成碎片。当我们使用malloc时,系统内部有一个空闲内存映射表,系统会自动在空闲内存中寻找第一个合适大小的空间分配!王洪祥可以帮助你!
二、"数组可以在内存空间连续存储任意一组数据"这句话错在哪里

这涉及到讨论的前提。VB、PHP、PYTHON中的数组是动态动态的,类型可以是任意的。不管物理内存是否连续,它不一定是连续的,而且往往是持久的。

数组相当于指针。声明时,它只声明一组指标。只有当一个值被设置时,指针才会指向存储数据的内存。该指针不需要是持久内存空间。Java数组必须先实例化才能使用,即使用new关键字并单击“新建”。

扩展信息:

在C中,数组是根据数据类型创建的。一个数组可以分为多个数组元素。这些数组元素可以是基本数据类型或结构类型。因此,根据数组元素的类型,数组可以分为不同的类别:标量数组、字符数组、指针数组和结构数组。

关于变长数组(VLA)的问题:原来的C89标准不允许变长数组,但是在C99标准中添加了VLA支持,但是编译器不多并且出于安全考虑由于栈溢出的问题,没有多少人敢用这个变长数组,所以在C11标准中将其定义为可选的实现函数。

参考来源:-矩阵