Yvonne0627 2020-08-28 16:58 采纳率: 0%
浏览 427

关于malloc分配地址,重复分配再释放,每次都是一样的地址,多次之后段错误退出

int32_t communicationbase::openLog(const char *LogName, int AscOrDec, int OpenType)
{
if( m_logFlag == 0)
{
m_logLock.lock();
m_logFlag = 1;
printf("openlog0-%p\n",m_iop_log_service);
m_iop_log_service = (iop_log_service_t *)malloc(sizeof(iop_log_service_t));
printf("openlog1-%p\n",m_iop_log_service);
int flag = iop_log_service_start(m_iop_log_service,"",LogName,100,AscOrDec,OpenType);
m_logLock.unlock();
return flag;
}
else
return -1;
}

int32_t communicationbase::closeLog()
{
if( m_logFlag == 1)
{
m_logLock.lock();
m_logFlag = 0;
int flag = iop_log_service_stop(m_iop_log_service);
m_iop_log_service = 0;
m_logLock.unlock();
return flag;
}
else
{
return -1;
}
}

测试程序中循环的调用这两个函数,系统是linux,下面是打印信息:
log-dbg-begin-1023--0x45177008
log-dbg-begin1-0x45177008
log-dbg-0-0
log-dbg-0-1
log-dbg-0-2
log-dbg-0-3
log-dbg-1
log-dbg-2
log-dbg-end
log-dbg-begin-1023--0x45177008
log-dbg-begin1-0x45177008
log-dbg-0-0
log-dbg-0-1
log-dbg-0-2
log-dbg-0-3
log-dbg-1
log-dbg-2
log-dbg-end
log-dbg-begin-1023--0x45177008
log-dbg-begin1-0x45177008

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-08-28 17:40
    关注

    你只调用了1次malloc,没有看到释放的代码(free),也没有看到多次。你的代码不完整?

    评论

报告相同问题?

悬赏问题

  • ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
  • ¥15 专业问题提问,7月5号2点之前
  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行
  • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373