我正在做一个项目,我们的教授给了我们代码,其中包含我们无法更改的变量和原型声明。一个是结构,指向该结构的指针的类型定义为pStudentRecord
:
typedef struct
{
char* firstName;
char* lastName;
int id;
float mark;
}* pStudentRecord;
使用指向此类型的指针称为g_ppRecords
. 这将是一个指向上述结构的动态指针数组。
这就是我的问题所在。将从文件中读取记录。如果指定的文件名不存在,则创建一个新文件名。g_ppRecords
每当用户添加第一条新记录时,我都会初始化指针:
if(!n) //where n = number of records
g_ppRecords = (pStudentRecord*) malloc(sizeof(pStudentRecord));
g_ppRecords[n] = (pStudentRecord) malloc(16);
到目前为止,此代码每次运行时都有效,但我不确定如何。pStudentRecord
如果我添加更多记录,则将在 中的下一个位置创建一个新指针 ( ) g_ppRecords
。据我了解,我还没有为那个新指针分配空间,但每次它工作时都没有任何问题。我可以很好地访问新结构的成员,并且我没有收到堆损坏错误或访问冲突或类似的情况。我的担忧是正确的还是我在怀疑自己?