c语言malloc函数当申请的空间大于内存时是否会使用虚拟内存?
展开全部
c语言不作这方面的判断,这是操作系统的事.
c语言程序直接将申请内存的请求发送给操作系统,操作系统会根据具体情况来处理,需要使用虚拟内存就使用,但在c语言程序来看,得到的内存与物理内存是一样的.
一般程序编译时会指定自己的堆有多大,malloc在堆中申请,如果超过堆的尺寸会申请失败;程序在启动时,向操作系统申请堆空间,一般不会是在运行时才申请堆空间的.
c语言程序直接将申请内存的请求发送给操作系统,操作系统会根据具体情况来处理,需要使用虚拟内存就使用,但在c语言程序来看,得到的内存与物理内存是一样的.
一般程序编译时会指定自己的堆有多大,malloc在堆中申请,如果超过堆的尺寸会申请失败;程序在启动时,向操作系统申请堆空间,一般不会是在运行时才申请堆空间的.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言不作这方面的判断,这是操作系统的事。
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
malloc 就是用虚拟存储。内存申清是否失败可以检查。例如: buffer = (char *) malloc(sizeoof(char)*90000);
if (!buff) { printf("no enough memory for buffer\n"); return 1;};
if (!buff) { printf("no enough memory for buffer\n"); return 1;};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是操作系统的事,无需你操心.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询