Ⅰ 求解 内存分配(Memory Allocate) 问题
1)malloc.h 是的,VC 6.0 用 #include <stdlib.h> 就可以了。
2)写法都对。用 malloc 或 calloc 与个人习惯 有关(各人喜欢,c语言历史有这2函数)。realloc 用于 随时可以 增加 动态分配 或 减小 动态分配 空间。另2个函数无此功能。
3) 加条件判断做释放: if ( p) free(p);
Ⅱ 内存分配策略和分配算法 有哪些 各位大虾帮帮忙!!!急需~~~~
任命吧!没用的拉!
Ⅲ 内存分配中的快速适应算法
如果空间分区划分的越细,则小空间就越多。此时,若是大部分进程长度都是大于大多数空间分区,则这些小于改进程长度的空间分区都不可被分配,从而造成更多了内存空间浪费。所以空间分区划分不应该太细,应保证在一定的范围,这样就可以容纳更广范围的进程。
Ⅳ 采用首次适应算法和最优置换算法,对内存的分配和回收速度会造成什么不同的影响
首次适应分配算法(FF):
对空闲分区表记录的要求是按地址递增的顺序排列的,每次分配时,总是从第1条记录开始顺序查找空闲分区表,找到第一个能满足作业长度要求的空闲区,分割这个空闲区,一部分分配给作业,另一部分仍为空闲区。
最佳置换算法(OPT):
选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。
Ⅳ 求C++实现的几个内存分配算法源代码。
http://wenku..com/view/2869ce80ec3a87c24028c46f.html
这里面有C语言实现的上面的两种算法,如果运行不了的话,你可以改改,如果运行成功了的话,你可以根据这个来写出另一个算法的代码。
Ⅵ 谁可以分析一下下面这段话中的C语言中的内存动态分配问题。
虽然你传入的参数是0,但实际上malloc仍然会为你分配一块4字节的内存(不同编译器可能有不同大小)。就比如你malloc(1),其实得到的内存块大小跟malloc(2)是一样的,这是由内存分配算法决定的。
这么做的原因其实很简单:大部分程序碰到malloc返回NULL的时候,都会认为内存不足,从而去开辟一个新堆或者直接就进入错误处理函数了。为了避免应用程序误判,malloc只要有内存,就一定会返回一个有效指针。
至于为什么是4字节,简单地说是因为考虑到内存分配算法和内存访问效率。这块牵涉到算法和一些硬件方面的知识,你有兴趣的话可以自己去看为什么。
Ⅶ 求操作系统首次适应算法,要求内存分配大小自己定,分配后还有多大内存,总之就是建立二级菜单
问题一:⑴ 存储管理的实质是什么?(对内存的管理,主要对内存中用户区进行管理)⑵ 多道程序中,为方便用户和充分利用内存以提高内存利用率,内存管理的任务是什么?(内存空间的分配和回收、内存空间的共享、存储保护、地址映射、内存扩充)。⑶ 如何实现存储保护? 答:在多道程序系统中,内存中既有操作系统,又有许多用户程序。为使系统正常运行,避免内存中各程序相互干扰,必须对内存中的程序和数据进行保护。1、防止地址越界对进程所产生的地址必须加以检查,发生越界时产生中断,由操作系统进行相应处理。2、防止操作越权对属于自己区域的信息,可读可写;对公共区域中允许共享的信息或获得授权可使用的信息,可读而不可修改;对未获授权使用的信息,不可读、不可写。存储保护一般以硬件保护机制为主,软件为辅,因为完全用软件实现系统开销太大,速度成倍降低。当发生越界或非法操作时,硬件产生中断,进入操作系统处理(4) 物理存储器分几类?(内存、外存、缓存)⑸ 虚存储器的含义是什么?(两层含义)答:虚存储器有两层含义,一是指用户程序的逻辑地址构成的地址空间;二是指当内存容量不满足用户要求时,采用一种将内存空间与外存空间有机地结合在一起,利用内外存自动调度的方法构成一个大的存储器,从而给用户程序提供更大的访问空间。⑹ 什么叫物理地址?什么叫逻辑地址?什么叫地址映射?地址映射分哪几类?(静态、动态)答:物理地址是内存中各存储单元的编号,即存储单元的真实地址,它是可识别、可寻址并实际存在的。用户程序经过编译或汇编形成的目标代码,通常采用相对地址形式,其首地址为零,其余指令中的地址都是相对首地址而定。这个相对地址就称为逻辑地址或虚拟地址。逻辑地址不是内存中的物理地址,不能根据逻辑地址到内存中存取信息。为了保证CPU执行程序指令时能正确访问存储单元,需要将用户程序中的逻辑地址转运行时可由机器直接寻址的物理地址,这一过程称为地址映射或地址重定位。地址映射可分为两类:1、静态地址映射2、动态地址映射问题二:⑴ 怎样对内存进行分区?(静态、动态;等长、不等长)答:对内存空间的划分是可以静态的,也可以动态的;可以是等长的,也可以不等长。静态划分是指系统运行之前就将内存空间划分成若干区域,通常,分配给进程的内存可能比进程实际所需的区域长。动态划分是在系统运行过程中才划分内存空间。这样,系统可按进程所需要的存储空间大小为其分配恰好满足要求的一个或多个区域。等长分区是将存储空间划分为若干个长度相同的区域。不等长分区则是将存储空间划分若干个长度不同的区域。⑵ 根据分区情况,从如何实现进程的内存分配?答:1、静态等长分区的分配2、动态异长分区的分配⑶ 什么叫碎片?(零散的小空闲区) 怎样解决碎片问题?(紧凑技术)答:所谓碎片是指内存中出现的一些零散的小空闲区域。解决碎片的方法是移动所有占用区域,使所有的空闲区合并成一片连续区域。这一过程称为紧凑,这一技术就是紧凑技术。。问题三:⑴ 存储管理方案有哪些?(分区管理、页式管理、段式管理、段页式管理、虚拟存储管理)⑵ 分区管理的基本思想是什么?主要缺点是什么?基本思想:将内存划分成若干连续的区域,称为分区,每个分区装入一个运行作业。主要缺点:不能充分利用内存,也不能实现对内存的扩充。⑶ 什么是固定分区?什么是可变分区?各有什么优缺点?答:固定分区:系统将内存划分为若干固定的分区,当作业申请内存时,系统为其选择一个适当的分区,并装入内存运行。由于分区大小是事先固定的,因而可容纳作业的大小受到限制,而且当用户作业的地址空间小于分区的存储空间时,浪费了一些存储空间。可变分区:是指在作业装入内存时建立分区,使分区的大小正好与作业要求的存储空间相等。引入可变分区方法,使内存分配有较大的灵活性,也提高了内存利用率。但是可变分区会引起碎片的产生。⑷ 分区管理可以采用的内存分配策略是什么?首先适应算法、最佳适应算法、最坏适应算法。⑸ 为实现地址映射和存储保护,系统为用户程序提供了哪些寄存器?基址寄存器、限长寄存器;上界寄存器、下界寄存器。问题四:⑴ 试述页式存储管理的基本原理① 内存划分。② 逻辑地址空间划分。③ 页面大小。④ 内存分配。⑵ 试述页式存储管理的实现方法①
Ⅷ 可变分区管理内存分配算法有那些,各有什么有缺点
连续分配: 首次适应算法(较快,简单,碎片多),最大适应分配算法(以期不留下小碎片), 最佳适应分配算法(慢,复杂,碎片少)。 都需要碎片整理。
离散分配:分段管理(逻辑性好),分页管理,段页式管理(最好,当然也复杂)。
Ⅸ linux系统的内存分配与回收采用什么算法
Linux的内存管理机制,遵循的原则是尽可能占用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能,所以当应用程序释放内存的时候,系统本身不一定会把内存释放,这样下次应用程序启动的时候能快速加...