求解:malloc定义数组为什么会导致4,7,8,20变RE?
查看原帖
求解:malloc定义数组为什么会导致4,7,8,20变RE?
268897
yamakaze楼主2020/8/6 17:58

下面是让4、7、8、20 RE的代码

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

typedef struct
{
	int dire;
	char name[11];
}info;

int main()
{
	int i,j,n,m,loc,lr,step;
	info *a;
	cin>>n>>m;
	a=(info *)malloc(sizeof(info) * n);
	for(i=1;i<=n;i++)
	{
		cin>>a[i].dire;
		cin>>a[i].name;
	}
	for(i=0,loc=1;i<m;i++)
	{
		cin>>lr>>step;
		if(lr==a[loc].dire)
			loc-=step;
		else
			loc+=step;
		for(;loc<=0;loc=n+loc);
		if(loc>n)
			loc=loc%n;
	}
	cout<<a[loc].name;
	return 0;
}

像下面这样直接定义一个info类型的数组就全部AC了

int main()
{
	int i,j,n,m,loc,lr,step;
	info a[100001];//  <--这里
	cin>>n>>m;
	for(i=1;i<=n;i++)
	{
		cin>>a[i].dire;
		cin>>a[i].name;
	}

这是为啥吔?

2020/8/6 17:58
加载中...