3249|1

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有个问题请教各位专家 [复制链接]

前几天, 项目组的软件出了问题, 老是崩溃. 攻关花了不少时间, 各相关部门的高手都请遍了, 只知道是内存使用的错误, 具体问题硬是没解决. 我用的是tornado + vxWorks系统, 所以来这里问问.

后来我检视代码, 发现是下面描述的这么个问题, 虽然搞定了, 但是大家仍然不大明白怎么回事:

typedef struct
{
    unsigned short wCmd;
    ....
    unsigned char* para;
}Cmd;

void foo(short wCnt)
{
    Cmd* pCmd = new Cmd[wCnt];
    memset(pCmd, 0, wCnd*sizeof(Cmd));

    for (short wIdx = 0; wIdx < wCnt; wIdx++)
    {
        pCmd[wIdx].para = new unsigned char[10];  //申请空间
        ........
    }
   
    delete []pCmd;  //没有释放各个Cmd的para
}

由于上面没有释放各个Cmd的para, 导致内存泄漏. 但软件出错肯定不是内存耗尽引起的, 因为这个内存泄漏非常有限, 而且只要软件一启动, 涉及到为STL的vector分配内存, 很可能就挂了.

但原因确实是这个, 因为把上面的 pCmd[wIdx].para 释放之后, 再也没出过问题.

不管是我个人还是其他大牛, 都对这事给不出个令人信服的解释.

我只能用: 跟操作系统的内存管理策略有关, 这种解释来糊弄自己.

特来向各位专家请教.

最新回复

内存泄露引起的问题很多,不光是内存耗尽, VxWork对内存处理的要求很高,严格执行分配内存释放内存的法则,减少程序的错误,增加程序的健壮性  详情 回复 发表于 2008-7-11 10:11
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
内存泄露引起的问题很多,不光是内存耗尽,

VxWork对内存处理的要求很高,严格执行分配内存释放内存的法则,减少程序的错误,增加程序的健壮性
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表