qq_54012131 2023-12-11 16:04 采纳率: 100%
浏览 49
已结题

引发了异常: 读取访问权限冲突

运行之后弹出新的代码,但原代码并未标明错误处,还请帮忙指点指点

#include<iostream>
using namespace std;
#include<string>
#include<ctime>

struct student
{
    string name;
    int score;
};
struct teacher
{
    string name;
    struct student stu[5];
};

void allocatespace(struct teacher tarr[], int len)
{
    string Nameseed = "ABCDE";

    for (int i = 0; i < len; i++)
    {
        tarr[i].name = "Teacher_";
        tarr[i].name += Nameseed[i];
        for (int j = 0; j < 5; j++)
        {
            tarr[i].stu[j].name = "Student_";
            tarr[i].stu[j].name += Nameseed[j];
            int random = rand() % 61 + 40;
            tarr[i].stu[j].score = random;
        }
    }
}

void printInfo(struct teacher tarr[], int len)
{
    for (int i = 0; i < len; i++)
    {
        cout << "老师姓名:" << tarr[i].name << endl;
        for (int j = 0; j < 5; j++)
        {
            cout << "\t学生姓名:" << tarr[i].stu[j].name
                << " 学生成绩:" << tarr[i].stu[j].score << endl;

        }
    }
}

int main()
{
    srand((unsigned int)time(NULL));

    struct teacher arr[3];

    int len = sizeof(arr) / sizeof(arr[0]);

    allocatespace(arr, len);

    printInfo(arr, len);

    system("pause");

    return 0;
}

img

  • 写回答

2条回答 默认 最新

  • Loup&卡普 2023-12-11 16:06
    关注

    你这个分配的长度 len 计算方式不对 ,sizeof(teacher)*3 才是 teacher 的内存, 而且没有分配内存,用 malloc 或者 new
    在每创建一个 teacher 的 student 都要给 student 分配内存

    没有分配内存 内存访问越界就会崩

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月12日
  • 创建了问题 12月11日