- C++相談室 part128 [無断転載禁止]©2ch.net
264 :デフォルトの名無しさん[]:2016/12/05(月) 00:23:17.61 ID:soEx3sdp - >>263
特定のアロケーター使って欲しい場合のためのstd::allocate_shared
|
- C++相談室 part128 [無断転載禁止]©2ch.net
266 :デフォルトの名無しさん[]:2016/12/05(月) 00:43:42.73 ID:soEx3sdp - >>265
std::listなどのコンテナ関係が警告なしに無視するのは許せるの? 逆に言えば標準ライブラリの中でクラスのnew deleteがあればそれを使うなんてもの殆ど無いよ
|
- C++相談室 part128 [無断転載禁止]©2ch.net
270 :デフォルトの名無しさん[]:2016/12/05(月) 08:03:39.13 ID:soEx3sdp - >>267
何のためにクラスのnew deleteをオーバーロードしてるのか知らんけどスタックに構築するのはいいの? std::list<T> a;って出来るのはいいの? それらが良くてmake_shared<T>()がダメな理由が解らないよ。
|
- C++相談室 part128 [無断転載禁止]©2ch.net
272 :デフォルトの名無しさん[]:2016/12/05(月) 10:16:56.47 ID:soEx3sdp - >>271
new deleteはオーバーライド出来ません gdiplusは恐らくそのクラスをgdiplusのdllの中でnewしてポインタ返しユーザーにdeleteさせるような設計になってるからdllの中のnewとアプリケーションのdeleteが不一致になるのを防ぐ為だと思う。 だからアプリケーションコードの中で生成、削除する分には必ずしもオーバーロードされてるnew deleteを使う必要はないんじゃねえかな
|
- C++相談室 part128 [無断転載禁止]©2ch.net
275 :デフォルトの名無しさん[]:2016/12/05(月) 11:20:32.71 ID:soEx3sdp - >>274
触っちゃダメな人だよ
|
- C++相談室 part128 [無断転載禁止]©2ch.net
277 :デフォルトの名無しさん[]:2016/12/05(月) 11:44:07.18 ID:soEx3sdp - 公式のexampleでもスタックに構築してる事から構築方法に特に制限は無い、(もし制限があるなら記述するか、factory関数内でのみこう)
|
- C++相談室 part128 [無断転載禁止]©2ch.net
278 :デフォルトの名無しさん[]:2016/12/05(月) 11:51:24.58 ID:soEx3sdp - 途中で書きこんでしまった。
通じる人に向けて書こうと思ったけど面倒くさくなったからいいや。
|
- C++相談室 part128 [無断転載禁止]©2ch.net
279 :デフォルトの名無しさん[]:2016/12/05(月) 12:02:47.33 ID:soEx3sdp - C++とdllとnew deleteの関係性について理解してる人には説明の余地もないけど、DLLの中でnewっていうのは所謂factoryメソッドのようなもの。gdiplusならBitmap::FromFileとか中で構築した物の生ポインタを返してるね。
それをユーザーコードでdeleteするとnew deleteをオーバーロードしていなけれはnewはDLLの中でリンクされているライブラリのメモリ確保が呼ばれる。 deleteはアプリケーションでリンクされているライブラリのメモリ解放が呼ばれる。 自分の知識の無さを棚に上げてデタラメ呼ばわりしたことを恥じて貰うために詳細に説明してあげたよ。
|