第 七 感 2022-10-29 16:41 采纳率: 50%
浏览 89
已结题

写入缓冲区溢出和读写数据无效

问题遇到的现象和发生背景

写哈夫曼树给,给树节点开辟动态内存空间时
HT写入缓冲区溢出和HT读取数据无效

用代码块功能插入代码,请勿粘贴截图
void haffcode(haff* &HT, int n, type* w)//n为叶子总数
{
    int m;
    m =2 * n - 1;//m为数节点数
    int mm = m + 1;
    //HT = (haff*)calloc((mm), sizeof(haff));
    HT = (haff*)malloc((mm)* sizeof(haff));//此时警告    C6386    写入 "HT" 时缓冲区溢出    
  //而换成calloc就没有警告
    assert(HT);
    HT[0] = { 0, 0, 0 };
    int i = 1;
    for (; i <= n; i++)
    {
        HT[i] = { w[i - 1], 0, 0 };
    }
    for (; i <= m; i++)
    {
        HT[i] = { 0, 0, 0 };
    }
    for (i = n + 1; i <= m; i++)
    {
        int s1 = 0, s2 = 0;
        select(HT, i, &s1, &s2);
        HT[i].left = s1;
        HT[i].right = s2;
        HT[s1].parent = i;
        HT[s2].parent = i;
        HT[i].weight = HT[s1].weight + HT[s2].weight;
    }
}
运行结果及报错内容

在给数组HT[i]内容赋值时总会警告(c6385和c6386)
而将malloc换成calloc警告

我想要达到的结果

这个造成的原因是是什么

  • 写回答

5条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-29 18:09
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月5日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 为什么我安装了Homebrew之后,无法像官网的那样通过执行命令安装Watchman
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表