高分,关于内存内存碎片的问题

coralbird 2005-03-28 07:49:57
在一个报文处理函数中,频繁调用 new pByte=new Byte[n],delete []pByte;导致的内存碎片windows会不会自己回收和合并?请大家畅所欲言关于内存碎片的问题 !
...全文
155 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
coralbird 2005-03-29
  • 打赏
  • 举报
回复
经参考《windows核心编程里面》内存管理堆栈部分,进程堆栈有两种,系统默认堆栈和辅助堆栈,辅系统默认堆栈只有一个,辅助堆栈可以有多个。如果不显示地创建辅助堆栈,将使用默认堆栈,但书里面说,使用堆栈存在碎片问题。(见453页更有效的内存 管理部分具体说明),我的理解应该是潜在的碎片问题。因为在451页开头中,作者这样描述

"Microsoft并没有以文档的形式来规定堆栈释放和收回存储器时应该遵循的具体规则,windows98与windows2000的规则是不同的,可以这样说,windows98更加注重内存的使用,因此只要可能,它就收回堆栈,windows2000更加注重速度,因此它往往较长时间占用物理存储器,只有在一段时间后页面不再使用时,才将它返回给页面文件。 "

alec626(月吻长河)分析没错,回收是肯定的, ybt631(正式开始找工作,有意者请留言!) 说的很中肯,对于2000来说有更明显的时间限制。我得出的结论之所以是潜在的碎片问题这样理解的:如果在堆栈中分配内存时,系统内存没有足够的空间并还没有来得及进行回收时,将导致分配失败。但有一个地方还不清楚,如系统检测到系统内存不足分配时会不会强行碎片的回收和合并?如果这个疑问成立,那就应该说不存在碎片问题了。


以上是我查阅《windows核心编程里面》所得出的结论,欢迎大家拍砖,《WINDOWS操作系统原理》手头没这本书,故没有查阅。

4inSky 2005-03-28
  • 打赏
  • 举报
回复
帮你顶
ybt631 2005-03-28
  • 打赏
  • 举报
回复
回收是肯定的
但也有时间限制。因为这种碎片的回收和 合并代价是比较高的。

月吻长河 2005-03-28
  • 打赏
  • 举报
回复
new是在堆中分配的内存,只要正确地delete掉,操作系统会自动回收合并的。WINDOWS具体采用的算法记不清了,可以参考《WINDOWS核心编程》的内存管理部分,也可以参考《WINDOWS操作系统原理》的内存管理部分,书上讲解得非常详细。
oyljerry 2005-03-28
  • 打赏
  • 举报
回复
进程后,OS会回收内存碎片
xuzheng318 2005-03-28
  • 打赏
  • 举报
回复
帮楼主定!关注!
wqze 2005-03-28
  • 打赏
  • 举报
回复
windows 应该不会处理 因为windows 已经把这段内存分配给你了
fanqing 2005-03-28
  • 打赏
  • 举报
回复
gz
Maxon CINEMA 4D Studio R22 是由德国 Maxon 设计公司开发的一款高效、快速、稳定和易用的专业三维设计工具,包含 GPU 渲染器 Prorender、生产级实时视窗着色、超强破碎、场景重建等诸多新功能。Maxon CINEMA 4D Studio R22 提供了优秀工具和诸多提升,你可立即将其投入工作并一瞥未来的根基。设计师因其快速、简单、易用的工作流程,以及坚如磐石的稳定性而选择 Maxon CINEMA 4D Studio R22,同时 22 可以让你的工作流程更加快速和可靠,新特性也会让你的视野变得更加开阔。 Maxon CINEMA 4D Studio R19 中文版Maxon CINEMA 4D Studio R22 中文版 今日的工具,明日的技术 Cinema 4D Release 22 提供了优秀工具和诸多提升,你可立即将其投入工作并一瞥未来的根基。设计师因其快速、简单的工作流程,以及坚如磐石的稳定性而选择Cinema 4D,同时Release 19 可以让你的工作流程更加快速和可靠,新特性也会让你的视野变得更加开阔。 工作流程 Cinema 4D快速简单的工作流程总是让加快设计速度变得简单。Release 19的准渲染视窗和其他极佳的工作流程改进,会让你比以往更快地准备创意稿给客户审批。 视窗 新基于物理的视窗具备实时反射和景深 你所看到的景深和屏幕空间反射是实时的渲染结果,可以更简单精准的对地面、灯光和反射进行可视化的设置。 Release 19除了屏幕空间环境吸收和实时置换以外,还添加了基于屏幕空间的反射和OpenGL景深效果。开启OpenGL观察看起来很好,你可以用它来输出新支持的原生MP4作为预览渲染,直接给客户审批。 LOD(细节级别)对象 使用新的LOD对象可最大程度提升视窗或渲染速度,创建新类型的动画或准备优化游戏资源。你可以根据屏幕大小、摄像机距离和其他因素自动简化对象和层级结构。直观的新界面元素让定义和管理LOD设置更简单,LOD能够通过导出FBX用于市面上主流的游戏引擎。 新媒体核心 作为我们的核心现代化工作的一部分,Cinema 4D支持图像、视频和音频的格式已经完全重写了,速度和内存效率得到了增强。除了QuickTime外Cinema 4D现在本地支持MP4,比以往更容易提供预览渲染、视频纹理或运动跟踪的画面。所有导入和导出的格式都比以往更加全面且功能强大。 交换格式更新 通过FBX和Alembic格式导出LOD和选择对象。Alembic文件新支持的次帧插值可进行Re-time并渲染准确的运动模糊。 新功能高亮显示 通过高亮显示新功能可快速识别R19、R18的新特性或特定的教学。 分裂更加简单 泰森分裂可以简单的进行程序化分裂对象 – 在Release 19你可以控制动力学与连接器,将碎片粘合在一起,添加裂缝和更多的细节。 球型摄像机 渲染”虚拟“现实 R19提供了渲染和体验渲染的新方法 – 利用强大的GPU进行快速、好看的OpenGL预览,或使用ProRender进行基于物理的最终高质量渲染。 准备加入虚拟现实革命? 使用R19的球形相机轻松渲染360°VR视频。 释放你显卡的力量来创建物理上精确的最终渲染。 AMD的Radeon ProRender技术无缝集成到R19中,支持Cinema 4D的标准材质、灯光和摄像机。无论你是在最新的Mac系统中使用强大的AMD芯片,还是在Windows中使用NVIDIA和AMD显卡,你都可以享受跨平台、深度集成的解决方案,具有快速、直观的工作流程。 交互式渲染 将ProRender附加到任何视窗,并像其他视窗一样使用它。 你可以在重新排列物体、调整相机、调整材质和照明时获得即时反馈。 进程式渲染整个图像,或在高分辨率渲染时使用区块式渲染以更好地进行内存管理。 ProRender可完全使用你系统中所有的显卡,无论你是使用具有多张Radeon的MacPro,还是具有AMD或NVIDA卡的Windows系统。 深入集成 使用Cinema 4D的材质、灯光和摄像机。 ”萤火虫“滤镜 消除路径追踪算法中常见的坏像素。 R20中的ProRender是产品可视化和其他类型渲染的绝佳选择,但当然这只是管中窥豹,ProRender最终将提供更多功能,并更深入地集成在将来的Cinema 4D版本中。 PBR工作流程 新PBR材质和灯光选项包含了基于物理渲染工作流的理想默认值。 紧跟现今趋势,为YouTube、Facebook、Oculus或Vive 渲染立体360° VR 视频。 新媒体核心 所有的格式都会在新媒体核心中导入和渲染 使用GIFs和MP4s作为纹理直接渲染为MP4、DDS和增强OpenEXR。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧