new申请内存多次后为什么会有内存碎片?

我要戒烟了 2010-04-08 10:52:09
如果内存碎片多的话会出现什么情况?
...全文
465 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyworth98 2010-05-25
  • 打赏
  • 举报
回复
呵呵,你可想象内存是一大块面包,然后你要切下其中的某些块……
tfeitian 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 herocxw2005 的回复:]
举个例子:
如果你只像内存要空间,而你程序运行完后又不把得到的空间给释放出来,后果可想而知了。别说2G内存,就是100G内存也会迅速的给用完的。呵呵
好借好还,再借不难。
借了不还,损人不利己。

呵呵,LZ应该明白了吧。
[/Quote]
这个应该是内存泄露吧,与内存碎片是两个概念
delphiwcdj 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 inzaghi97 的回复:]
内存碎片多了除了性能会下降外,会不会导致程序申请不到内存而使调用malloc时直截挂掉?
[/Quote]
一般都要对malloc的返回值进行判断
我要戒烟了 2010-04-08
  • 打赏
  • 举报
回复
内存碎片多了除了性能会下降外,会不会导致程序申请不到内存而使调用malloc时直截挂掉?
bsr2009 2010-04-08
  • 打赏
  • 举报
回复
看看操作系统的教材就知道了.
lovesi3344 2010-04-08
  • 打赏
  • 举报
回复
new申请内存多次后为什么会有内存碎片
所以
分10次new一个整型的变量 比 new一个10个整型的数组 占的空间多
liuharris 2010-04-08
  • 打赏
  • 举报
回复
因为new申请了内存空间如果不用delete释放的话,会导致内存泄露的。你动态申请的内存,被分配出去了如果不回收,就不能继续被其他进程利用,就变成了内部碎片,另外,一些没有被分配出去的内存由于大小太小了无法分配给申请内存空间的新进程的内存空闲区域就变成了外部碎片。
碎片多了当然就会影响内存的使用啦,对大文件的读入很大影响啊,处理的时间多了速度就慢了
_JeffreyWu 2010-04-08
  • 打赏
  • 举报
回复
找个内存整理工具整理下
jbz001 2010-04-08
  • 打赏
  • 举报
回复
其实和硬盘差不多一个道理
senr0816 2010-04-08
  • 打赏
  • 举报
回复
内存碎片多,对后面稍大内存的申请带来麻烦
jackyjkchen 2010-04-08
  • 打赏
  • 举报
回复
磁盘用多了为什么会有碎片?都是存储器,一个道理
YT158828 2010-04-08
  • 打赏
  • 举报
回复
记得delete就是了...
zwlzhj 2010-04-08
  • 打赏
  • 举报
回复
这也就涉及到代码的规范和效率的问题,楼上基本回答了你的疑问。
herocxw2005 2010-04-08
  • 打赏
  • 举报
回复

举个例子:
如果你只像内存要空间,而你程序运行完后又不把得到的空间给释放出来,后果可想而知了。别说2G内存,就是100G内存也会迅速的给用完的。呵呵
好借好还,再借不难。
借了不还,损人不利己。

呵呵,LZ应该明白了吧。
sxcnfly 2010-04-08
  • 打赏
  • 举报
回复
如果你经常分配小内存,势必会出现碎片,最好自己写一个小内存管理。
dream17953 2010-04-08
  • 打赏
  • 举报
回复
同意楼上的
na2650945 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liuharris 的回复:]
因为new申请了内存空间如果不用delete释放的话,会导致内存泄露的。你动态申请的内存,被分配出去了如果不回收,就不能继续被其他进程利用,就变成了内部碎片,另外,一些没有被分配出去的内存由于大小太小了无法分配给申请内存空间的新进程的内存空闲区域就变成了外部碎片。
碎片多了当然就会影响内存的使用啦,对大文件的读入很大影响啊,处理的时间多了速度就慢了
[/Quote]
学习。
Julykey 2010-04-08
  • 打赏
  • 举报
回复
建议看一下操作系统吧,在不断的申请过程中,势必会有一些小的内存是你用不到的。相当于在一间房间里你堆东西,肯定有一些小角落是你不能利用的,一个道理

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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