㈠ c语言中,什么是缓冲文件系统和文件缓冲区
目前c语言使用的文件系统分为缓冲文件系统(标准i
/
o)和非缓冲文件系统(系统i
/
o)。缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执
行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。
因此当程序运行时虽然进行了写数据操作,但是如果写入的数据没有装满内存中的缓冲区,就不会将数据写入到磁盘文件中。当程序运行结束后,系统就会将缓冲区中的数据写入到磁盘上的文件中,因此就可以看到文件中的内容。
常用的fopen命令就会使用文件读写缓冲区,fclose命令关闭文件,把缓冲区中的内容写入磁盘上的文件中。详见:
http://study.qqcf.com/web/171/19812.htm
㈡ C语言中清除内存缓冲区的函数是什么
是I/O 函数分为“带缓冲”的和“不带缓冲”的两类。
带缓冲的 I/O 函数写数据时,并不直接写磁盘介质,而是将数据先写到这块内存缓冲中,之后用户空间缓冲中的数据会被传送到系统缓冲中。
linux 内核会将系统缓冲中的数据送完磁盘驱动器(fsync函数可以加速这一过程),这之后,数据才真正的被写入磁盘。
因为目前内存的读写速度往往远大于硬盘的读写速度(常 ms 级)。因此,缓冲区的建立可以尽力避免太过频繁的写磁盘。
对于硬盘来说,写入一个字节可能跟写入一个扇区没什么两样,程序员每次写入的数据也许就几个字节,所以可以将每次写入的几个字节放入缓冲区,排列组合成一整块数据再写入,也能极大的提升效率。
(2)c内存缓存池扩展阅读
1、带缓冲的 I/O 读函数读取数据之前,则会首先判断用户空间的进程缓冲区是否包含数据,如果没有,则继续判断系统缓冲区是否包含数据。
2、“带缓冲”的 I/O 读函数从磁盘读取数据时,并不只读取调用者指定的读取字节数。读函数可能一次性读取一个扇区(常常是 512B)保存在缓冲区里,只返回给程序员需要的 10 字节。
㈢ C语言如何实现内存池
原理就是先申请一大块内存,按照不同尺寸分成很多固定块. 比如16字节100块儿,32字节100块儿.64字节50块儿,具体多少块儿要看你的项目需求,我这里只是举例,反正应用时保证够就行.
然后程序运行时,不再用malloc和new来申请内存. 而是从这些块儿里申请.如果一个结构体A它的尺寸是30字节. 那么就从内存池里申请一块儿32字节的给他.
当然释放时,也要归还给内存池.
内存池负责管理一个Free-Block链表.
㈣ 如何在C/C++程序中运用双缓存双线程等大规模数据处理的技巧 或者要怎么做可以一次调入一块数据进行处理
线程技术主要是用来并行处理一些任务,这些任务之间一般少有逻辑顺序上的关联,所以用线程技术可以提高程序整体的运行速度,特别在其中一些子线程运行速度有很大差距的情况下。
各类软件使用缓存的方式都不一样。双缓存或者多个缓存、缓存池等等方式都有。关键在于你的程序需要使用怎样的缓存结构。比如说你是类似生产者消费者模型的软件,你也许会使用多个缓存做成队列,一头在不断填充,一头则不断消耗,这样能大大提高整体的数据吞吐速度。
fread不输入整块调入,它底层是使用的read之类的函数,对文件句柄进行操作。gets函数则是对指针指向的内存地址操作。这些都是上层逻辑了,离磁盘寄存器很远。真正加快文件读取速度的方法有很多,比如把整个文件映射到内存里,又比如跳过磁盘缓存直接大块读取内容。这些有的有专门的API函数可用,有的则需要你自己改写系统底层代码。
建议你多看看操作系统原理方面的书,可以去试着学习下linux内核代码和原理,这样你对这些问题就会有更深的认识。
希望这些建议能帮助你。
㈤ 想问下C的缓冲区是什么东西在内存的哪个地方如何知道大小有的书说数组就是个缓冲区,那是在栈上了
缓冲区就是内存上的一块地方 用来存放你的数组的地方
在什么地方由系统分配,大小由你定义的数组决定
全局数组在堆上,局部变量在栈上,动态定义的指针在栈上,数据在堆上
㈥ 内存与缓存的区别
虚似内存
:jiushi就是在硬盘空间开辟的空间
物理内存
就是
主版上的内存条
缓存
置于cpu内的高价高速小容量存储器
价格最贵所以最小
XP系统。右击我的电脑-属性-高级-性能(设置按钮)-高级-最下面有更改虚拟内存按钮。
通常情况是
虚拟内存是物理内存的1。5倍。一般系统默认在系统盘设置的虚拟内存空间,起到缓存的作用。
所以,蓝屏故障和其它故障一样,根据成因大致可以分为软件和硬件两个方面。现在还是遵循先软后硬的原则来看看故障的成因和解决办法吧!
??一、软件引起的蓝屏故障
??1.重要文件损坏或丢失引起的蓝屏故障(包括病毒所致)。
??实例:Win98中的VxD(虚拟设备驱动程序)或是.DLL?动态连接库?之类的重要文件丢失,情况一般会比较严重,会出现“蓝屏警告”。
??解决方法一:记下所丢失或损坏的文件名?用Win98启动盘中的“Ext”命令从Win98安装盘中提取和恢复被损坏或丢失的文件,步骤如下:
??(1)用Win98启动盘引导计算机,在提示符下敲入“Ext”命令。
??(2)在提示“Please
enter
the
path
to
the
Windows
CAB
files(
a):”后输入Win98安装压缩包所在的完整路径,如“F?\Pwin98\Win98”,完成后回车。
??(3)在提示“Please
enter
the
name(s)of
the
file(s)
you
want
to
extract:”后输入你记下的丢失文件名,如“Bios.Vxd”,回车。
??(4)在解压路径提示“Please
enter
path
to
extract
to(‘Enter’
for
current
directory):”后输入文件将被解压到的完整路径,如“C?
\Windows\System”并敲回车。
??(5)最后出现确认提示“Is
this
Ok?(y/n):”,输入“y”后回车。“Ext”程序会自动查找安装盘中的CAB压缩包,并将文件释放到指定的位置。
??(6)重新启动即可。
??解决方法二:用杀毒软件杀毒。有的病毒可能会破坏注册表项?杀毒后注册表应恢复中毒之前的备份。
??解决方法三:如果能启动图形界面,可以采取重装主板以及显卡的驱动程序,和进行“系统文件扫描”来恢复被破坏或丢失的文件。“系统文件扫描”的方法为?单击“开始/程序/附件/系统工具/系统信息/工具/系统文件检查器”,然后扫描改动过的文件即可。
??2.注册表损坏导致文件指向错误所引起的蓝屏。
??实例:注册表的擅自改动(包括人为地改动和软件安装时的自动替换)?其现象表现为开机或是在调用程序时出现蓝屏,并且屏幕有出错信息显示(包含出错的文件名)。
??解决方法一:恢复备份。
??(1)单击“开始/关机/重新启动计算机并切换到MS-DOS方式”,然后单击“是”;
??(2)进入Windows目录下。例如,如果你的Windows安装在“C?\Windows”
目录下,应键入以下内容?“CD
C?\WINDOWS”后回车;
??(3)键入“SCANREG\RESTORE”后回车。
??(4)按照上述步骤,可以将注册表恢复到最近一次启动计算机时的状态。
??解决方法二:删除键值。
??如果是在卸载程序后出现蓝屏的话,笔者断定故障是由于程序卸载不完善造成的。解决这类问题非常简单,首先你要记下出错的文件名,然后再到注册表中找到以下分支“HKEY_LOCAL_MACHINE\System
??\CurrentControlSet\Services\VxD”。在“查找”中输入刚才的文件名,把查到的键值删除即可。此时,千万不要忘记备份注册表哦!
??典型案例:笔者在删除金山毒霸时中途死机,重新启动后刚看到桌面的图标就出现蓝屏,并伴有错误信息出现。错误信息中提到Kavkrnl.vxd文件找不到,笔者首先根据文件名的前两个字符确定该文件不是Win98的系统文件,ka开头的应是金山毒霸的虚拟设备驱动程序。基本判断为文件指向错误,于是决定删除它在注册表中相应键值。在注册表编辑器的查找中输入“Kavkrnl.vxd”,将它在“HKEY_LOCAL_
??MACHINE\System\CurrentControlSet\Services\VxD”中的相应主键值删除,重启后故障消除。
??3.System.ini
文件错误引起的“蓝屏”。
??实例:软件卸载或是安装后未即时更新System.ini
文件所造成的错误。
??解决方法:禁用注册表中该项或是重新安装相应的软件或驱动程序。
??4.Win98自身的不完善造成的蓝屏。
??实例:Win98的sp1和Microsoft的Vxd_fix.exe补丁程序对Win98的稳定性起着至关重要的作用。
??解决方法:快去下载吧,如华军网站南京站http?//nj.onlinedown.net/Win98SP1.htm?Win98sp1?及http?//nj.onlinedown.net/Windows98VxDpatch.htm?
Vxd_fix.exe?。
??5.系统资源耗尽引起的蓝屏故障。
??实例:蓝屏故障常常发生在进行一项比较大的工作时,或是在保存复制的时候,且往往发生得比较突然。这类故障的发生原因主要是与三个堆资源(系统资源、用户资源、GDI资源)的占用情况有关。
??解决方法:打开你的资源状况监视器,看一下剩余资源,如果你的三种资源都在50%甚至更低,就很容易出现诸如“非法操作”、“蓝屏”或“死机”故障。为此,必须减少资源浪费,减少不必要的程序加载,避免同时运行大程序(图形、声音和视频软件),例如加载计划任务程序,输入法和声音指示器,声卡的DOS驱动程序,系统监视器程序等等。
??6.DirectX问题引起的蓝屏故障。
??实例:(1)DirectX版本过低或是过高;(2)游戏与它不兼容或是不支持;(3)辅助重要文件丢失;(4)显卡对它不支持。
??解决方法:升级或是重装DirectX。如果是显卡不支持高版本的DirectX那就说明你的显卡实在是太老了,尝试更新显卡的BIOS和驱动程序,否则,只好花钱升级显卡了。
??二、硬件引起的蓝屏故障
??1.内存超频或不稳定造成的蓝屏。
??实例:随机性蓝屏。
??解决方法:先用正常频率运行,若还有问题。找一根好的内存条进行故障的替换查找,一般可以解决。再就是应当注意当CPU离内存很近时内存的散热问题。
??2.硬件的兼容性不好引起的蓝屏。
??兼容机好就好在它的性价比较高,坏就坏在它在进行组装的时候,由于用户没有完善的监测手段和相应的知识,无法进行一系列的兼容性测试,从而把隐患留在了以后的使用过程中。
??实例:升级内存时,将不同规格的内存条混插引起的故障。
??解决方法:注意内存条的生产厂家、内存颗粒和批号的差异,往往就是因为各内存条在主要参数上的不同而产生了蓝屏或死机,甚至更严重的内存故障。也可以换一下内存条所插的插槽位置。如果内存条还是不能正常工作,那就只好更换了。此处,提醒各位:内存在整个微机系统中起着非常重要的作用,它的好坏将直接影响到系统的稳定性,所以在内存的选购时要注意,最好是有内行人陪伴,避免买到Remark过的条子或频率过低的条子。
??3.硬件散热引起的“蓝屏”故障。
??实例:在微机的散热问题上所出现的故障,往往都有一定规律,一般在微机运行一段时间后才出现,表现为蓝屏死机或随意重启。故障原因主要是过热引起的数据读取和传输错误。
??解决方法:采取超频的应降频,超温的应降温。其实不一定所有的故障都那么复杂,有时候从简单的方面考虑,也能很好地解决问题?要学会触类旁通。
??4.I/O冲突引起的蓝屏现象。
??解决方法:这种现象出现得比较少,如果出现了,可以从系统中删除带!号或?号的设备名,重新启动计算机进行确认,或者请高手手动分配系统资源。
??凡事要防患于未然,下面是笔者总结出来的一些经验,可供大家参考:
??1?定期对重要的注册表文件进行手工备份,避免系统出错后,未能及时替换成备份文件而产生不可挽回的错误。
??2?尽量避免非正常关机,减少重要文件的丢失。如.VxD
.DLL文件等。
??3?对普通用户而言,只要能正常运行,没有必要去升级显卡、主板的BIOS和驱动程序,避免升级造成的危害。
??4?定期检查优化系统文件,运行“系统文件检查器”进行文件丢失检查及版本校对。检查步骤参见前面相关介绍。
??5?减少无用软件的安装,尽量不用手工卸载或删除程序,以减少非法替换文件和文件指向错误的出现。
??6?如果不是内存特别大和其管理程序非常优秀,尽量避免大程序的同时运行,如果你发现在听MP3时有沙沙拉拉的声音,基本可以判定该故障是由内存不足而造成的。
参考资料:历史资料
㈦ 本地磁盘C内存不足
给你个
c盘
的减负的方法:
1,卸载不重要的程序,需要就重装到其他的盘区!
2,转移
虚拟内存
。
3,关闭
系统还原
并删除
还原点
生成文件:我的电脑-属性-系统还原。
4,设置下载程序和在线播放器,一般它们那c盘做默认存放下载文件的缓存路径!如果发现路径在c盘,转移并删除缓存文件!
5,C:\WINDOWS\SoftwareDistribution\Download的文件可以删除,如果从没有弄过,里面也许占用数个g的空间,但一般最多几百m而已。
6,c:\windows\里有些“$Ntuninstall***$”的文件是升级补丁后产生的,可以删除,但看清楚我写的文件夹名字哦,别删错,里面有几个类似文件不可以删除错的!
---------2,3,4是比较有效果的c盘减负操作!
按我说的弄弄去,或者可以帮到你!但不看到机器,不清楚具体!
㈧ C/C++内存分几部分啊堆、栈、静态存储区,还有别的没
首先分为两部分 寄存器和内存(包括缓存)
内存分为两部分 代码和数据。
数据分为两部分 静态存储区和运行时存储。
运行时存储分为 堆栈和堆。
静态存储分为 全局静态存储和常量。
㈨ C语言中,求内存缓冲区的详细解释!
缓冲区(Buffer)又称为缓存(Cache),是内存空间的一部分。也就是说,在内存中预留了一定的存储空间,用来暂时保存输入或输出的数据,这部分预留的空间就叫做缓冲区。
缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。