8830|12

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

malloc频繁申请大内存会导致异常吗 [复制链接]

我在程序中
{
......
malloc 400K字节的缓冲区  
......
free ~ }

请问如果频繁的反复以上操作会导致异常或者死机吗
我的程序 疯狂进行30次会出现异常  不知道是不是这个原因引起的

最新回复

如果还有可用的物理内存分配,应该没有问题  详情 回复 发表于 2008-9-12 11:34
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
频繁申请与释放会导致内存碎片出现,但最多也是引起内存分配不成功,不会出什么异常啊。

LZ的程序,没有对内存申请失败进行判断吗?
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
才30次,不算多
晕到死虽然不稳定,也不可能就因为这个异常的
把你的代码多贴点出来吧
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

4
 
malloc 成功了再 free 应该不会出现象楼主说的那个问题
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
代码问题。

一般不会的。就是内存太少,也就是申请失败,不会出异常。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
不会的,应该是你的其他代码有问题
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 

申请不用后一定要记得free和del才行。
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼上所说的问题我早就排除过,所有的变量都初始化, 指针都有判断
不过这一执行过程非常复杂,是在另一个线程(排除同步控制的问题),涉及到频繁打开文件读取,字符解吸还有大量循环,是用了GOTO失败时跳到统一的函数出口。并且添加了异常处理,正常使用是不会出问题的
我频繁的快速切换时进行所谓的魔鬼测试才会出现这种问题,30次,50次,100次不等就会异常,但是不崩溃,偶尔应用程序会死掉

看起来代码还不是很安全,我贴个代码有恐怕3000多行,能抓到异常但不知道是哪里出现的异常  
各位有什么办法吗?
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
死掉是指直接退出? 不会在debugger里断下来吗?

如果很容易重现的话,可以在怀疑的地方加HeapValidate, 如果失败就DebugBreak.

 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
1. goto很容易导致内存泄露吧. 用AppVerifier测试下看看.
2. free后置空指针了吗? 以避免double free.
3. 用smart_ptr替换裸指针看看.
4. 写越界? 但这个太难查了.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
不好查问题。

如果你觉得代码结构没有问题,那么
可以先把功能模块都注释掉,先测裸的代码框架结构。

然后再逐个测试单一功能模块。

不能单独测试的,可以从最小集合模块开始测试。慢慢加入新模块。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
分成N个功能模块单一测试时异常的出现没有规律不针对某一模块
问题还是没有解决
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

13
 
如果还有可用的物理内存分配,应该没有问题
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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