C言語なら俺に聞け(入門編)Part 63at TECH
C言語なら俺に聞け(入門編)Part 63 - 暇つぶし2ch390:351
10/04/24 15:37:17
>>389の続き)

【my_strdupのメリット】
strdupは、内部でmallocをするため、呼び出した後、必ずfreeが必要になります。
一方、my_strdupなら、自動変数を引数に渡せるので、必ずしもfreeは必要ありません。
この点では、my_strdupの方が便利です。これがmy_strdupのメリットです。

【strdupのメリット】
しかし、my_strdupでは、文字列全体をコピーしたい場合、
元の文字列よりも大きなサイズのメモリー領域を渡さなければ、文字列全体をコピーすることが出来ません。
このため、my_srtdupを呼び出す前に、strlenを使うなどして元の文字列のサイズを知る必要があります。
一方、strdupは内部で必要なサイズの領域をmallocするので呼び出す前に元の文字列のサイズを知る必要はありません。
この点では、strdupの方が便利です。これがstrdupのメリットです。

以上は文字列での例でしたが、
構造体や他のデータ領域を扱う関数を考えるときにも
呼び出し元でメモリーを確保して渡すか、あるいは関数の内部でmallocするか、
についてどういう時にどうしたらいいのか、を考えることができるかと思います。

一般的な指針があれば知りたいです。


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