- 351 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 00:47:16 ]
- 関数から構造体を返す必要がある場合、何か基準や定石はありますか?
こういう時にはこうすれば良いという指針があれば知りたいです。 //構造体の例 struct my_struct { int size; void *ptr; int data[]; }; //(1)create関数の中で構造体をmallocして、delete関数の中でfreeする。 struct my_struct* create_my_struct(int param); void delete_my_struct(struct my_struct* md); //(2)呼び出し元で構造体を確保して、init関数の中でメンバーをmallocして、release関数の中でメンバーをfreeする。 // 構造体そのものは呼び出し元でどうにかする。 int init_my_struct(struct my_struct* md, int param); void release_my_struct(struct my_struct* md); それぞれ下記のデメリットがあると思います。 (1)のデメリットは呼び出し元で入れたいメモリー領域がある場合、createした構造体をコピーする必要がある。 (2)のデメリットは呼び出し元でinitを呼ぶ前に構造体の大きさを知っていなければいけない。
|

|