だから私は.hファイルの初期化と同じコンストラクタで動的メモリを割り当てる
private:
eventlist *pointer;
int counter;
int size;
と、この構造体型
struct eventlist// Define our struct type
{
char name[100];
char todo[100];
char where[100];
char when[100];
char attended[100];
char excitement[100];
};
にクラスのこれらのプライベートデータメンバーを持っていると仮定すると私はしたいです構造体の動的配列を作成します。ここで私は主に好奇心程度だ...私はコンストラクタとして持っているもの
summerlist::summerlist()
{
size = 0;// Initialize size to zero
counter = 0;//Initialize counter to zero
pointer = new eventlist[size];
strcpy(pointer[0].name,"\0");
strcpy(pointer[0].todo,"\0");
strcpy(pointer[0].where,"\0");
strcpy(pointer[0].when,"\0");
strcpy(pointer[0].attended,"\0");
strcpy(pointer[0].excitement,"\0");
}
です:
- は、それは私のコンストラクタで構造体の私の配列を割り当てても大丈夫ですか?それは何か問題を引き起こすことができますか?
- NULLへのポインタを初期化する前に配列を割り当てても構いませんか?私はそれがダイナミック配列へのポインタとして初期化されているので、それは大きな問題ではないと仮定しています。しかし、私はそれが受け入れられる練習であるかどうかを知りたい。
- 私がやったように配列の最初の要素を初期化するのは意味がありますか?私はメモリが配列(基底)の少なくとも1つの要素に割り当てられているので、最初の要素を初期化するのがよい方法だと思ったが、私が正しく可視化しているかどうかはまだ少し不安です。
- 最後に、動的配列を作成してポインタをNULLに設定すると、メモリリークが発生し、最初の要素が正しく初期化されませんでしたか?
FWIWでは、実際には 'std :: string'と適切なスマートポインタを使用するべきです。 –
'size == 0'の' pointer = new eventlist [size]; 'について確かめていますか? –