0x00007FF66B6C1252 处有未经处理的异常(在 结构体案例.exe 中): 0xC0000005: 写入位置 0x0000000000000000 时发生访问冲突。

1 篇文章 0 订阅
1 篇文章 0 订阅

最近在学结构体,但在运行时一直出现了如题所示的问题,我在网上查了许久都没有解决方案以下是我的代码

#include<iostream>
using namespace std;

struct Student
{
	string sName;
	int score;
};

struct Teacher
{
	string tName;
	Student sArray[5];
};

void allocateSpace(struct Teacher tArray[],int len)
{
	string nameSeed = "ABCDE";
	int i, j;
	for (i = 0; i < len; i++)
	{
		tArray[i].tName = "Teacher_";
		tArray[i].tName += nameSeed[i];
		for (j = 0; j < 5; j++)
		{
			tArray[i].sArray[j].sName = "Student_";
			tArray[i].sArray[j].sName += nameSeed[j];

			tArray[i].sArray[j].score = 60;
		}
	}
}

void printInfo(struct Teacher tArray[], int len)
{
	int i, j;
	for (int i = 0; i < len; i++)
	{
		cout << "老师姓名:" << tArray[i].tName << endl;

		for (j = 0; j < 5; j++)
		{
			cout << "学生姓名:" << tArray[i].sArray[j].sName
				<< "考试分数:" << tArray[i].sArray[j].score << endl;
		}
	}
}

int main()
{
	Teacher tArray[3];
	int len = sizeof(tArray)-sizeof(tArray[0]);
	allocateSpace(tArray, len);
	printInfo(tArray, len);
	system("pause");
	return 0;
}

 错误是在这里

按网上的说法,一般是在访问没有权限的地址的时候才会出现这个问题,也就是这种问题一般会出现在使用数组时越界,或者指针的时候才会出现,那么这是怎么出现的呢?

其实在用string生成变量的时候就相当于时生成了一个const的数组,然后最蠢的地方来了,因为一直找不到错误,我就怀疑是在计算len长度时有误,于是我就再一次(之前问过好多次,ai也还是找不到)把int len = sizeof(tArray) - sizeof(tArray[0]);这串代码扔给了ai,然后……

真相大白,原来是我把除号写成了减号,真的是令人崩溃的答案,一个小小的失误就让我找了半天,看来下次得更严谨一点了┭┮﹏┭┮

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值