我无法动态地将内存分配给指向struct的指针内的char数组。 这是一个必须使用这个结构轮廓的家庭作业:
struct Student
{
char *namePtr;
unsigned int score;
};
这是我遇到麻烦的部分
/***************************
* takes value from temporary value and puts into dynamic allocated Student array
***************************/
bool updateStructPtr(Student **info, unsigned int index, char *name, unsigned int score)
{
try
{
info[index]->namePtr = new char [strlen(name)+1];
if(DEBUG) cout << "size for dynamic char: " << strlen(name)+1 << endl << endl;
//copy char array into new array
strcpy(info[index]->namePtr, name);
info[index]->score = score;
}
catch (bad_alloc & param)
{
info[index]->namePtr = NULL;
return false;
}
return true;
}
我的教授说: 浏览一下您的代码就会发现您似乎没有为我提供的算法的步骤3-2的第一句中指定的Student结构动态分配内存。
3-2。为Student结构动态分配内存。将此Student结构的地址放在结构指针数组中。您还需要动态分配足够的内存来存储名称。不要存储引号字符。使用步骤3-1中的两个项目填充学生结构的字段。
指针数组中的指针指向内存中的随机位置,您尝试使用这些随机地址。这当然可以解释为什么程序崩溃了。实际上有很多方法可以使这个程序崩溃,并且必须仔细遵循所有步骤以避免这种情况。
但我不知道如何解决这个问题或从哪里开始。
答案 0 :(得分:0)
因此,您的作业并非真正有用。
话虽如此,老师的指示非常精细和正确。您必须在某个时刻使用new Student
和new Student[]
来实际更新传递给您的学生** info
,以便添加新的学生结构。应该添加。
答案 1 :(得分:0)
我猜测在调用函数之前没有分配Student
个实例。您必须通过Student
分配new Student
的新实例,并将其存储在info
的{{1}}。
index