分段错误,在动态分配的结构中动态分配结构
Segmentation Fault , dynamically allocating a structure inside a dynamically allocated structure
这是我的完整代码..这是一个很大的代码,谢谢你的时间.
在上面的代码中,我想知道我无法为 structure.I 中的结构动态分配内存的确切原因通常在 codechef、hackerrank、codeforces.然而,我是新手做这样的一些项目...我已经调试了一下,所以我找到了错误所在,但我无法纠正它,我无法安睡...如果您找到原因,请告诉我并帮助我解决问题 !!
简而言之,我的代码是,对于没有多少空闲时间的人 :) :-
struct subject
{
struct DateTime StartTime,EndTime; //Don't bother about these structure definitions
string ClassName,ClassType;
int ThresholdPercentage,MaxPossiblePercentage;
struct Note notes; //Don't bother about these structure definitions
};
struct students
{
struct subject *subjects;
string name;
int MaxSubjects;
} *student;
int main(void)
{
int NStudents,Subjects,i,j;
cout<<"Enter Number of Students:- ";
cin>>NStudents;
student=(struct students*)malloc(sizeof(struct students)*(NStudents+1));
cout<<'\n';
for(i=1;i<=NStudents;i++)
{
cout<<"Enter Number of Subjects for "<<i<<" Student:- ";
cin>>Subjects;
student[i].MaxSubjects=Subjects;
student[i].subjects=(struct subject*)malloc(sizeof(struct subject)*(Subjects+1));
cout<<'\n';
for(j=1;j<=Subjects;j++)
{
cout<<"Enter the name of Subject "<<j<<" :- ";
cin>>student[i].subjects[j].ClassName;//<<<==================FAULT HERE.
}
PrintStudentSubjects(i);
}
return 0;
}
实际问题
struct subject
{
struct DateTime StartTime,EndTime; //Don't bother about these structure definitions
string ClassName,ClassType;
int ThresholdPercentage,MaxPossiblePercentage;
struct Note notes; //Don't bother about these structure definitions
};
struct students
{
struct subject *subjects;
string name;
int MaxSubjects;
} *student;
student=(struct students*)malloc(sizeof(struct students)*(NStudents+1));
student[i].subjects=(struct subject*)malloc(sizeof(struct subject)*(Subjects+1));//<<== In a loop..
这给了我一个分段错误...我不能使用 malloc 吗?如果不能,为什么?..如果是,请教我 :) .
malloc()
不会为您的 类 调用构造函数。使用 new
.
student = new students[NStudents+1];
student[i].subjects = new subject[Subjects+1];
这是我的完整代码..这是一个很大的代码,谢谢你的时间.
在上面的代码中,我想知道我无法为 structure.I 中的结构动态分配内存的确切原因通常在 codechef、hackerrank、codeforces.然而,我是新手做这样的一些项目...我已经调试了一下,所以我找到了错误所在,但我无法纠正它,我无法安睡...如果您找到原因,请告诉我并帮助我解决问题 !!
简而言之,我的代码是,对于没有多少空闲时间的人 :) :-
struct subject
{
struct DateTime StartTime,EndTime; //Don't bother about these structure definitions
string ClassName,ClassType;
int ThresholdPercentage,MaxPossiblePercentage;
struct Note notes; //Don't bother about these structure definitions
};
struct students
{
struct subject *subjects;
string name;
int MaxSubjects;
} *student;
int main(void)
{
int NStudents,Subjects,i,j;
cout<<"Enter Number of Students:- ";
cin>>NStudents;
student=(struct students*)malloc(sizeof(struct students)*(NStudents+1));
cout<<'\n';
for(i=1;i<=NStudents;i++)
{
cout<<"Enter Number of Subjects for "<<i<<" Student:- ";
cin>>Subjects;
student[i].MaxSubjects=Subjects;
student[i].subjects=(struct subject*)malloc(sizeof(struct subject)*(Subjects+1));
cout<<'\n';
for(j=1;j<=Subjects;j++)
{
cout<<"Enter the name of Subject "<<j<<" :- ";
cin>>student[i].subjects[j].ClassName;//<<<==================FAULT HERE.
}
PrintStudentSubjects(i);
}
return 0;
}
实际问题
struct subject
{
struct DateTime StartTime,EndTime; //Don't bother about these structure definitions
string ClassName,ClassType;
int ThresholdPercentage,MaxPossiblePercentage;
struct Note notes; //Don't bother about these structure definitions
};
struct students
{
struct subject *subjects;
string name;
int MaxSubjects;
} *student;
student=(struct students*)malloc(sizeof(struct students)*(NStudents+1));
student[i].subjects=(struct subject*)malloc(sizeof(struct subject)*(Subjects+1));//<<== In a loop..
这给了我一个分段错误...我不能使用 malloc 吗?如果不能,为什么?..如果是,请教我 :) .
malloc()
不会为您的 类 调用构造函数。使用 new
.
student = new students[NStudents+1];
student[i].subjects = new subject[Subjects+1];