青鸟£飞鱼 2021-09-25 14:38 采纳率: 0%
浏览 12

free()怎么不能释放malloc申请的内存啊?VC6运行到这就报错停止

Status InitList ( SqList &L )
{
/allocate memory/
L.elem = (ElemType *)malloc( LIST_INIT_SIZE * sizeof(SqList) );
if ( !L.elem ) return MEM_ALLOCATE_ERROR;

/*initialize structure parament*/
L.length = 0;
L.listszie = LIST_INIT_SIZE;
return OPRERTER_SUCCESS ;

}
Status DestroyList ( SqList &L )
{
if ( !L.elem ) return SQLIST_NOT_EXIST;

free((void *)L.elem);

return OPRERTER_SUCCESS ;

}

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-09-25 16:48
    关注

    首先这个空间申请的就是错的
    L.elem = (ElemType *)malloc( LIST_INIT_SIZE * sizeof(SqList) );
    L.elem是Sqlist中的一个数组,不是SqList,SqList中还有一个长度大小值呢
    其次,就看这两个函数不好判断原因,可能是中间函数处理中改变了L.elem,所以最好还是把整个代码贴出来

    评论

报告相同问题?

问题事件

  • 创建了问题 9月25日

悬赏问题

  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗