5475|10

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EVC中2个线程序 频繁new delete会不会造成内存碎片 [复制链接]

new 与 delete 有无内存碎片的管理功能机制?望高手赐教!

最新回复

WINCE下是没有内存碎片回收机制的 luocan1986 正解 举个例子吧 看代码: LPBYTE p1 = new BYTE[10]; LPBYTE p2 = new BYTE[10]; LPBYTE p3 = new BYTE[10]; delete []p3; delete []p2; delete []p1; 复制代码 WINCE 在搜索空闲内存块的时候只会分配连续的内存空间.. 如果在为p1,p2,p3分配好空间后先释放了p1,那么如果再次开辟一段内存,就会从p3后的地址空间开辟,这样p1之前被释放掉的内存空间也就变成内存碎片了. 楼主可以写个简单的代码测试下..就知道其中的端倪了..   详情 回复 发表于 2010-1-29 16:31
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
系统不会自动管理这些内存碎片的。
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
会产生内存碎片的
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
1  2 3 3 2 1的原则! 比较好用
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 91program 的回复:
会产生内存碎片的


我觉得也会.用数组好了.
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
1,申请了大小不一的内存空间 如{3B}{10B    }{6B    }{15B      }
2,然后某一个不要了      变成{3B}{10B    }{free  }{15B      }
3,接着又要7B        {3B}{10B    }{free  }{15B      }{7B      }
4,释放15b            {3B}{10B    }{free  }{free      }{7B     }
5,再要21b         那是否回在2个FREE里面去申请呢变成 {3B}{10B    }{21B }{7B     }
????还是变成{3B}{10B    }{free  }{free      }{7B     }{21b}
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
如果一定要申请,每次都申请相同大小的空间, 这样不容易产生内存碎片.
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
of course
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
干嘛老是申请啊,每个线程开一个足够大的空间,不久好了吗?
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 6 楼 91program 的回复:
如果一定要申请,每次都申请相同大小的空间, 这样不容易产生内存碎片.


嗯,不错
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

11
 
WINCE下是没有内存碎片回收机制的
引用 3 楼 luocan1986 的回复:
1? 2 3 3 2 1的原则! 比较好用

luocan1986 正解
举个例子吧
看代码:

  1. LPBYTE p1 = new BYTE[10];
  2. LPBYTE p2 = new BYTE[10];
  3. LPBYTE p3 = new BYTE[10];
  4. delete []p3;
  5. delete []p2;
  6. delete []p1;
复制代码

WINCE 在搜索空闲内存块的时候只会分配连续的内存空间..
如果在为p1,p2,p3分配好空间后先释放了p1,那么如果再次开辟一段内存,就会从p3后的地址空间开辟,这样p1之前被释放掉的内存空间也就变成内存碎片了.
楼主可以写个简单的代码测试下..就知道其中的端倪了..
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表