[過去ログ] C++相談室 part164 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
507: (ワッチョイ 0928-rP6O) 2023/07/17(月)23:47 ID:mG7BHGLy0(4/5) AAS
基本的に、というのは(2)のケースで例外が生じたときクローズされずに抜けてしまう危険性があるのと、
(1)のケースにおいてもobj1の構築中に例外が生じた場合はきちんとデストラクトされない危険性がある。
Obj1のメンバがnewされるべき生ポインタの場合はこれは対処不能。生ポはやめてスマポにすればおk

詳しい話ははちみつ餃子氏に聞くと良い(マテ
508: (ワッチョイ 0928-rP6O) 2023/07/17(月)23:58 ID:mG7BHGLy0(5/5) AAS
訂正orz、
誤: ループの終わりでデストラクタが呼ばれる(破棄される)から、(>>506
正: ループが次の繰り返しに入る前かループを抜ける際にデストラクタが呼ばれる(破棄される)から
509: (ワッチョイ 847c-8c0A) 2023/07/18(火)00:04 ID:yoLqrsJ/0(1) AAS
>>502
必要ならそのGetObj()とやらのドキュメントにDevice::ReleaseXyz()とかDevice::ReleaseObj(obj1)とかobj1.release()とかを後で呼ぶように指示されてるはず
それを怠ってリークさせたならお前がタコ
そういう指示がないくせに勝手にリークするならそのライブラリがタコ
そんだけの話
510: はちみつ餃子◆8X2XSCHEME (ワッチョイ 163e-MI76) 2023/07/18(火)00:16 ID://OyAtPF0(1/2) AAS
そして使い方がドキュメント化されてないなら組織として問題がある。
が、そういう話はマ板で。
511
(1): 502 (ワッチョイ ae7a-CYkg) 2023/07/18(火)00:38 ID:ibbV/iYr0(1) AAS
皆さんありがとう。
>>506
ブロックスコープは知りつつも、ループのブロックの場合はループ中は寿命が継続すると思っていました。
ループ時に毎度後始末されるなら安心です。
512: はちみつ餃子◆8X2XSCHEME (ワッチョイ 163e-MI76) 2023/07/18(火)01:05 ID://OyAtPF0(2/2) AAS
>>511
根拠。
外部リンク[auto]:timsong-cpp.github.io
513: (ワッチョイ 3279-EJzg) 2023/07/18(火)02:17 ID:BpIlHiPB0(1) AAS
組み込み用途のライブラリで毎回ループ終端でデストラクタが呼ばれるように普通は設計しないから大丈夫
疑わしいならベンダーに問い合わせるかライブラリのソースを読めば解決
514
(3): (ワッチョイ b632-bpoS) 2023/07/21(金)16:52 ID:PleiVI860(1) AAS
ちょいとコイツを見て欲しい。MSVC 14.36.32532でC++17かつセキュリティチェック無効(/GS-)

画像リンク[png]:i.imgur.com

最小コードで再現するために、コマンドライン文字列を変な形式として扱ってるのは置いといて
変数rSizeが、引数argcのスタック領域(ebp+8)に割り当てられるんだけど、こんな最適化ある?
確かにargcは用済みだが、レジスタやローカルスタックではなくcdeclのconst引数にストアする?
515: (ワッチョイ 5cfb-MzNP) 2023/07/21(金)16:56 ID:LKM5BaGE0(1) AAS
そんなことよりbooost向けの技術書について教えてくれ
516: 蟻人間◆T6xkBnTXz7B0 (スフッ Sd94-5KMR) 2023/07/21(金)18:04 ID:GfD0zzOHd(1) AAS
そんな最適化あるよ。長期に渡って解析やってたらときどき出くわすよ。
517: (ワッチョイ 82f0-rqn1) 2023/07/21(金)18:26 ID:eD9pKuA20(1) AAS
ADLについて初めて知ったのがboost::mathだった懐かしい
518: (ワッチョイ 847c-8c0A) 2023/07/21(金)20:33 ID:9+qEAU5C0(1) AAS
観測可能な範囲で規格通りの挙動をする限りは、コンパイラ様はどんなバイナリを吐こうとどんな風にメモリやレジスタを扱おうと自由なのだ
519
(2): (ワッチョイ a728-Nt2/) 2023/07/22(土)11:54 ID:1sMnnOgP0(1/5) AAS
if文の条件式のところにがっつり文が書かれてゐる
最後の式の値が結果、とかますますPerl的世界に……
そのうち値を返す関数もreturn書かなくて良くなったりして……
520: (ワッチョイ 473e-8suU) 2023/07/22(土)12:15 ID:QLIAp4G50(1/3) AAS
>>519
任意の文を書けるわけではなく単純宣言に限られる。
521: (ワッチョイ 0710-XcQ/) 2023/07/22(土)13:25 ID:uVFJqD+w0(1/2) AAS
うん。なんか「見てくれ」とか言うから見たけどサンプルとしてもしょーもないコードだなと思って
一度コメントしかけてやめた
windowsのxx仕様 独自mainとか
522: (ワッチョイ 0710-XcQ/) 2023/07/22(土)13:27 ID:uVFJqD+w0(2/2) AAS
自分が本当に答えを知りたいんじゃなくて、フレームというか、言い争いを起こして面白がりたいのかな、とか
523: (ワッチョイ a728-Nt2/) 2023/07/22(土)15:21 ID:1sMnnOgP0(2/5) AAS
やっぱ
void foo() {
 for (int i = 0; i < 100; i++) { .... }
 for (int ii = 0; ii < 100; ii++) { ... }
 ...
 for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; iiiiiiiiiiiiiiiiiiii++) { ... }
}
とかあってどのfor文でもループ変数のアドレスをとるような式が書かれていなかったら
ローカル変数i、ii、...、iiiiiiiiiiiiiiiiiiが違うアドレスでなければならない理由は何も無いから
同じアドレスに割り当てになる可能性は高いと思う
省3
524
(2): (ワッチョイ a728-Nt2/) 2023/07/22(土)15:31 ID:1sMnnOgP0(3/5) AAS
ていうか補足、
void bar(int& x);
というのがあって
for (int i = 0; i < 100; i++) { bar(i); }
for (int ii = 0; ii < 100; ii++) { bar(ii); }
for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; ii++) { bar(iiiiiiiiiiiiiiiiiiii); }
だった場合はこれは明示的にループ変数のアドレスをとっているわけではないが、
アドレスをとっているのと同じことなので
i、ii、...、iiiiiiiiiiiiiiiiii同じアドレスに割り当てになる可能性は無くなると思う
よかったなあ>>514
525
(1): (ワッチョイ a728-Nt2/) 2023/07/22(土)15:33 ID:1sMnnOgP0(4/5) AAS
しかしわからんのは
void bar(const int& x); // const !
だった場合は
for (int i = 0; i < 100; i++) { bar(i); }
for (int ii = 0; ii < 100; ii++) { bar(ii); }
for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; ii++) { bar(iiiiiiiiiiiiiiiiiiii); }
だった場合はi、ii、...、iiiiiiiiiiiiiiiiiiが同じアドレスに割り当てられ得るのかどうかわわからん……
526: (ワッチョイ a728-Nt2/) 2023/07/22(土)15:41 ID:1sMnnOgP0(5/5) AAS
ゴメ自己解決しますたorz
1-
あと 476 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.699s*