C言語なら俺に聞け(入門編)Part 63at TECH
C言語なら俺に聞け(入門編)Part 63 - 暇つぶし2ch351:デフォルトの名無しさん
10/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を呼ぶ前に構造体の大きさを知っていなければいけない。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch