私は、教授が変更できない変数とプロトタイプ宣言を含むコードを提供してくれたプロジェクトを行っています。1つは構造体であり、その構造体へのポインタは次のようにtypedefされ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
ます。私の理解では、その新しいポインタ用のスペースを割り当てていませんが、問題が発生することなく動作するたびに。新しい構造体のメンバーに正常にアクセスでき、ヒープ破損エラーやアクセス違反などは発生しません。私の懸念は正しいですか、それとも私は自分自身を疑っていますか?