如果在申请动态内存时找不到足够大的内存块,malloc和new将

题目

如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。你是怎么处理内存耗尽的?

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

计算机领域内,同步动态内存英文缩写是()。

A、EDD

B、ECC

C、BEDC

D、SDRAM


参考答案:D

第2题:

c++提供的动态内存分配和释放的操作符为【 】和【 】。


正确答案:newdelete
new,delete

第3题:

已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为()。

a. free(p);

b. free p;

c. free(*p);

d. free[p];


正确答案是:C

第4题:

某操作系统的内存管理采用段式管理,内存分配采用最先适配算法,计算机的内存为50MB,刚开始时内存均未使用。经过一段时间的运行(其内存申请、释放的序列为:申请20MB—申请15MB—申请10MB—释放15MB—申请10MB—释放20MB—申请8MB)以后,内存中存在(23)。

A.2个空闲块,长度分别为10MB、12MB

B.3个空闲块,长度分别为12MB,5MB,5MB

C.1个空闲块,长度为22MB

D.4个空闲块,长度分别为5MB、5MB、5MB、7MB


正确答案:B
解析:本题考查的是段式管理中,空闲块的管理策略、内存分配的最先适配算法及其应用。在段式管理的操作系统中,由本题考查的是段式管理中,空闲块的管理策略、内存分配的最先适配算法及其应用。在段式管理的操作系统中,由于每一个段的内存区域是连续的,经过一段时间的内存分配与释放后,在内存将会形成若干彼此并不相邻的空闲存储块。通常,采用空闲块链表的方式来管理,每个链表项包括该空闲块的起始地址和长度。当一个内存申请到来之际,操作系统将检查空闲块链表,选择合适的空闲块,将其切割,分配给申请进程所需要的内存空间。由于空闲块的大小往往并不与所申请的数量恰好相等,会余下部分内存,形成新的空闲块,再将其链入空闲块链表。当进程释放一个内存块时,操作系统将检查它是否与现有的空闲块相邻,若相邻就加以合并,链入空闲块表,否则就直接链入。所谓最先适配算法,就是当一个内存申请到来时,操作系统检查空闲块链表,将所发现的第一个长度不小于申请要求的空闲块加以切割并分配。本题中,由于内存没有使用,只有一个空闲块,起始地址为0,长度为50M。响应第1个要求(申请分配20M)后,分配出去的是起始地址为0、长度为20M的内存块,空闲块还是一个,长度为30M,起始地址为20M。同理,响应第2个要求(申请分配15M)后,分配出去的是起始地址为20M、长度为15M的内存块,空闲块还是一个,长度为15M,起始地址为35M。响应第3个要求(申请分配10M)后,分配出去的是起始地址为35M、长度为10M的内存块,空闲块仍旧是一个,长度为5M,起始地址为45M。第4个要求是释放15M内存,显然是第2个要求所申请的。这时,空闲块链表有了两项:第5个要求是申请10M,显然第1个空块可以满足,切割并分配的磁盘块的起始地址为20M,长度为10M,空闲块链表变成第5个请求释放20M,是第1次申请的内存,响应释放后空闲块链表变成第6个请求申请8M,空闲块链表的第1项可以满足,切割并将起始地址为0,长度为8M的内存块分配出去,空闲块链表变成所以正确答案应该为B。

第5题:

New delete 与malloc free 的联系与区别?


正确答案:

 

:都是在堆(heap)上进行动态的内存操作。用
malloc函数需要指定内存分配的字节数并且不能初
始化对象,new 会自动调用对象的构造函数。delete
会调用对象的destructor,而free 不会调用对象的
destructor.

第6题:

C++用操作符new和delete来进行动态内存管理(分配与释放堆内存)。()


参考答案:正确

第7题:

请编写实现void * malloc(int)内存分配函数功能一样的代码。


正确答案:
           

第8题:

关于动态存储分配,下列说法正确的是

A.new 和 delete是C++语言中专门用于动态内存分配和释放的函数

B.动态分配的内存空间也可以被初始化

C.当系统内存不够时,会自动回收不再使用的内存单元,因些程序中不必用delete释放内存空间

D.当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new


正确答案:B
解析:本题考核动态存储分配。用于动态分配的内存空间称为堆内存,它通常由操作系统进行管理且数量有限,其内存空间可以被初始化。若程序不断分配堆内存,则可能耗尽,在这种情况下,系统无法再对new提出的内存分配请求给予满足,此时 new会返回空指针NULL,表示动态存储分配操作失败,不会造成系统崩溃。在C++程序中由new分配的动态内存空间必须通过delete运算符释放。

第9题:

PowerVM是否支持动态内存调整?()

A.是

B.否


参考答案:A

第10题:

已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为()。

Afree(p);

Bfree p;

Cfree(*p);

Dfree[p];


A

更多相关问题