c语言malloc函数当申请的空间大于内存时是否会使用虚拟内存?

2025年03月12日 21:23
有4个网友回答
网友(1):

c语言不作这方面的判断,这是操作系统的事.
c语言程序直接将申请内存的请求发送给操作系统,操作系统会根据具体情况来处理,需要使用虚拟内存就使用,但在c语言程序来看,得到的内存与物理内存是一样的.
一般程序编译时会指定自己的堆有多大,malloc在堆中申请,如果超过堆的尺寸会申请失败;程序在启动时,向操作系统申请堆空间,一般不会是在运行时才申请堆空间的.

网友(2):

c语言不作这方面的判断,这是操作系统的事。
  
虚拟内存

计算机系统
内存管理
的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的
地址空间
),而实际上,它通常是被分隔成多个
物理内存
碎片,还有部分暂时存储在外部
磁盘存储器
上,在需要时进行
数据交换
。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“
交换空间
”等。

网友(3):

malloc
就是用虚拟存储。内存申清是否失败可以检查。例如:
buffer
=
(char
*)
malloc(sizeoof(char)*90000);
if
(!buff)
{
printf("no
enough
memory
for
buffer\n");
return
1;};

网友(4):

molloc是动态分配内存用的,局部变量存放在栈区,申请多少自己可定,不是固定死不变,而且用完之后可以用free释放内存空间,可以有效的使用系统内存,不会造成浪费!
当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。