FIGHTErS87 2022-01-25 23:44 采纳率: 100%
浏览 301
已结题

malloc 函数报错Process returned -1073740940 (0xC0000374) ?

下面是代码


#include <bits/stdc++.h>

using namespace std;

typedef struct teamLink
{
    string tName;
    int tScore;
    int tNetGoal;
    struct teamLink* nextTeam;
}*TeamLink;

void Insert(TeamLink &tL,TeamLink t)
{
    if (tL == NULL)
        tL = t;
    else
    {
        TeamLink p = tL;
        TeamLink pre = (TeamLink)malloc(sizeof(struct teamLink));
        TeamLink tag = pre;
        pre->nextTeam = p;
        while(p->nextTeam != NULL && p->tScore > t->tScore)
        {
            p = p->nextTeam;
            pre = pre->nextTeam;
        }
        if (p->nextTeam == NULL)
        {
            p->nextTeam = t;
            free(tag);
            return;
        }
        else
        {
            p = p->nextTeam;
            while(p->nextTeam != NULL && p->tNetGoal > t->tNetGoal && p->tScore == t->tScore)
            {
                p = p->nextTeam;
                pre = pre->nextTeam;
            }
        }
        t->nextTeam = p;
        pre->nextTeam = t;
        free(tag);
    }//else
    return;
}

int main(int argc, char const *argv[])
{
    int M,N;//参战队M 出线队N
    cin>>M>>N;
    cout<<M<<" "<<N<<endl;
    TeamLink tL = NULL;
    for (int i = 0; i < M; ++i)
    {
        cout<<i<<endl;
        TeamLink t = (TeamLink)malloc(sizeof(struct teamLink));//应该是这行代码的问题
        int win,plain,loss,goal,rgoal;
        string name;
        cin>>name>>win>>plain>>loss>>goal>>rgoal;
        t->tName = name;
        t->tScore = win*3 + plain;
        t->tNetGoal = goal - rgoal;
        t->nextTeam = NULL;
        Insert(tL,t);
        t = NULL;
        cout<<tL->tName<<" "<<tL->tScore<<" "<<tL->tNetGoal<<endl;
    }
    TeamLink p = tL;
    for (int i = 1; i <= N; ++i)
    {
        cout<<i<<"\t"<<p->tName<<"\t"<<p->tScore<<"\t"<<p->tNetGoal<<endl;
        p=p->nextTeam;
    }
    return 0;
}

img

为什么第一次循环的时候可以malloc第二次反而不可以了呢?

样例:
4 2
德国 1 1 0 9 3
俄罗斯 1 0 0 2 1
威尔士 1 1 1 10 2
芬兰 0 1 0 3 3

输出:
1 威尔士 4 8
2 德国 4 6

  • 写回答

2条回答 默认 最新

  • 关注
    TeamLink p = tL;
    for (int i = 1; i <= N; ++i)
    {
        cout<<i<<"\t"<<p->tName<<"\t"<<p->tScore<<"\t"<<p->tNetGoal<<endl;
        p = p->nextTeam; //加上这个让p移动到下一个节点
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 修改了问题 1月26日
  • 修改了问题 1月26日
  • 展开全部

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。