c ++ char数组的动态结构指针

时间:2013-10-16 14:24:06

标签: c++ arrays dynamic

我无法动态地将内存分配给指向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中的两个项目填充学生结构的字段。

指针数组中的指针指向内存中的随机位置,您尝试使用这些随机地址。这当然可以解释为什么程序崩溃了。实际上有很多方法可以使这个程序崩溃,并且必须仔细遵循所有步骤以避免这种情况。

但我不知道如何解决这个问题或从哪里开始。

2 个答案:

答案 0 :(得分:0)

因此,您的作业并非真正有用。

话虽如此,老师的指示非常精细和正确。您必须在某个时刻使用new Studentnew Student[]来实际更新传递给您的学生** info,以便添加新的学生结构。应该添加。

答案 1 :(得分:0)

我猜测在调用函数之前没有分配Student个实例。您必须通过Student分配new Student的新实例,并将其存储在info的{​​{1}}。

index