!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part163
https://mevius.5ch.net/test/read.cgi/tech/1672409791/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C++相談室 part164
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33da-QP0H)
2023/05/09(火) 11:50:52.06ID:EYc2I7oW0490デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 22:15:14.37ID:UiYhW/dJM ファーストクラスコレクションにしないならその実装は不要だ
基本的に存在意味がない
基本的に存在意味がない
491はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/15(土) 22:20:38.51ID:oCSaktaG0 ワイはプログラミング言語 Scheme を使ってるんやが Scheme の仕様には datum という語が出てくる。
シリアライズの単位に関する概念なのでリストひとつも datum と (つまり単数形で) 呼ばれるのが
ちょっとモニョッとする。
シリアライズの単位に関する概念なのでリストひとつも datum と (つまり単数形で) 呼ばれるのが
ちょっとモニョッとする。
492デフォルトの名無しさん (JP 0H8a-PPvg)
2023/07/16(日) 08:28:58.24ID:PzNRrLhAH どうでもいいことを突っ込んでる人いますけど
Datas=>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Data=>aaaaaaaaaaaaaaaa
と置換してください
Datas=>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Data=>aaaaaaaaaaaaaaaa
と置換してください
493デフォルトの名無しさん (アウアウウー Sa3a-ZX0e)
2023/07/16(日) 09:51:34.88ID:Po24/3Vva hogehogetoyukainanakamatati
で解決
で解決
494デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/16(日) 16:16:15.89ID:z7qY/utw0 powershellはJSONやxmlをその構造のまま扱えたりオブジェクト(PSCustomObject)にも変換できてpythonなんかより小奇麗に書けますよっと
>>478だとif ($a.tsaro.age -eq $a.hanako.age) { ... という具合
>>478だとif ($a.tsaro.age -eq $a.hanako.age) { ... という具合
495デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/16(日) 16:20:50.17ID:z7qY/utw0 powershellはC#とシームレスに連携する手段もあってpowershellで苦手な再帰処理とかをC#コードに逃がしてpowershell機能を使いたい部分はActionやFuncから呼び出す事もできますよっと
496デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/16(日) 16:21:58.50ID:z7qY/utw0 よく見たらここC++スレだね
俺の事は忘れてください
俺の事は忘れてください
497デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 18:33:54.32ID:mG7BHGLy0 質問なのですがclass Datasというクラスがあってstd:::vector<Datas> vec((size_t)100); であるときに
vec[k]の場所にn個の場所を空けたい(値は初期化済Datasオブジェクトなら何でも良い)場合どう書くべき?
やっぱ手動でsz = vec.size(); vec.resize(sz + n);して既存要素vec[k..sz-1]を後ろ(vec[k+n..])にコピーする --- (1)
のが最速?
仮にstd::vector<T>::insertを使うと
Datas x; // (A)
vec.insert(std::next(vec.begin(), k), n, x); // (B)
になると思うのですが、なんか(A)で不必要にオブジェクトを1個構築せねばならないのと
(B)で多分デフォルトコンストラクタではなくコピコンがn回呼ばれるのちょっち嫌
(なぜなら(1)のコピーとn個分の場所の確保に加えて、xをn回コピーするという余デフォルト構築よりも遅そうな処理をするから
vec[k]の場所にn個の場所を空けたい(値は初期化済Datasオブジェクトなら何でも良い)場合どう書くべき?
やっぱ手動でsz = vec.size(); vec.resize(sz + n);して既存要素vec[k..sz-1]を後ろ(vec[k+n..])にコピーする --- (1)
のが最速?
仮にstd::vector<T>::insertを使うと
Datas x; // (A)
vec.insert(std::next(vec.begin(), k), n, x); // (B)
になると思うのですが、なんか(A)で不必要にオブジェクトを1個構築せねばならないのと
(B)で多分デフォルトコンストラクタではなくコピコンがn回呼ばれるのちょっち嫌
(なぜなら(1)のコピーとn個分の場所の確保に加えて、xをn回コピーするという余デフォルト構築よりも遅そうな処理をするから
498はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/17(月) 20:23:35.30ID:YifLUjyU0499デフォルトの名無しさん (ワッチョイ 915f-9/0y)
2023/07/17(月) 21:47:09.31ID:I9Lq0d6Q0 >>497
無駄なデフォルトコンストラクタやコピーを削って極力ムーブで済ませようと思ったら
sz, k, n の大小関係ごとに場合分けして move_iterator 経由の insert とか使い分ければ
いけそうだけど、面倒なわりに見合うほど効率改善しそうな気はしない。
無駄なデフォルトコンストラクタやコピーを削って極力ムーブで済ませようと思ったら
sz, k, n の大小関係ごとに場合分けして move_iterator 経由の insert とか使い分ければ
いけそうだけど、面倒なわりに見合うほど効率改善しそうな気はしない。
500デフォルトの名無しさん (ワッチョイ 82f0-rqn1)
2023/07/17(月) 22:08:16.87ID:kACYNrgv0 書き込みはそこまで遅くないから労力に見合わないだろうね
501デフォルトの名無しさん (スッップ Sd94-v8RM)
2023/07/17(月) 22:54:28.45ID:vqJJKRdWd 速度を気にするなら実測しないと始まらないよ。
502デフォルトの名無しさん (ワッチョイ ae7a-CYkg)
2023/07/17(月) 23:18:54.88ID:vGotTgNV0 リアルタイムOSのタスクのように無限ループが前提のとき
TASK Task1() {
while(1) {
Obj1 obj = Device::GetObj();
:
:
}
のようにobjを使う場合に、GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
そうなると自作でないクラスのメソッドは使う前にnewの有無をすべて調べなければならなくなるように思います。
実際はそんな不条理はないはずで、このような問題はどう対処するのがいいですか。
TASK Task1() {
while(1) {
Obj1 obj = Device::GetObj();
:
:
}
のようにobjを使う場合に、GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
そうなると自作でないクラスのメソッドは使う前にnewの有無をすべて調べなければならなくなるように思います。
実際はそんな不条理はないはずで、このような問題はどう対処するのがいいですか。
503デフォルトの名無しさん (ワッチョイ df01-L4gQ)
2023/07/17(月) 23:25:49.78ID:CT+u9aWW0504デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 23:34:05.22ID:mG7BHGLy0 わかりました
505デフォルトの名無しさん (ワッチョイ 82f0-rqn1)
2023/07/17(月) 23:42:05.60ID:kACYNrgv0 自作でないクラスでも使う関数がメモリ動的確保するかどうか普通は確認するぞ
506デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 23:46:35.71ID:mG7BHGLy0 >>502
>GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
この懸念は普通の作りなら基本的に無用。基本的に問題無い
(1) Obj1という型がポインタやハンドルではなくクラスの場合:
objはwhile(1) { }のブロックの中で構築されるので
ループの終わりでデストラクタが呼ばれる(破棄される)から、
Device::GetObj()が真っ当な作りならnewしたポインタをObj1のインスタンスobjに引き渡し、
Obj1クラスが真っ当な作りならobjが破棄されるときに引き渡されたポインタをdeleteする(ように作る
からダングリングポインタは生じない(ようにできる
(2) Obj1という型がポインタやハンドルの場合
確保したポインタやハンドルはいずれクローズせねばならない。
ループが次の繰り返しに入る前に確実にクローズすればよい
>GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
この懸念は普通の作りなら基本的に無用。基本的に問題無い
(1) Obj1という型がポインタやハンドルではなくクラスの場合:
objはwhile(1) { }のブロックの中で構築されるので
ループの終わりでデストラクタが呼ばれる(破棄される)から、
Device::GetObj()が真っ当な作りならnewしたポインタをObj1のインスタンスobjに引き渡し、
Obj1クラスが真っ当な作りならobjが破棄されるときに引き渡されたポインタをdeleteする(ように作る
からダングリングポインタは生じない(ようにできる
(2) Obj1という型がポインタやハンドルの場合
確保したポインタやハンドルはいずれクローズせねばならない。
ループが次の繰り返しに入る前に確実にクローズすればよい
507デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 23:47:03.13ID:mG7BHGLy0 基本的に、というのは(2)のケースで例外が生じたときクローズされずに抜けてしまう危険性があるのと、
(1)のケースにおいてもobj1の構築中に例外が生じた場合はきちんとデストラクトされない危険性がある。
Obj1のメンバがnewされるべき生ポインタの場合はこれは対処不能。生ポはやめてスマポにすればおk
詳しい話ははちみつ餃子氏に聞くと良い(マテ
(1)のケースにおいてもobj1の構築中に例外が生じた場合はきちんとデストラクトされない危険性がある。
Obj1のメンバがnewされるべき生ポインタの場合はこれは対処不能。生ポはやめてスマポにすればおk
詳しい話ははちみつ餃子氏に聞くと良い(マテ
508デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 23:58:52.90ID:mG7BHGLy0509デフォルトの名無しさん (ワッチョイ 847c-8c0A)
2023/07/18(火) 00:04:09.43ID:yoLqrsJ/0 >>502
必要ならそのGetObj()とやらのドキュメントにDevice::ReleaseXyz()とかDevice::ReleaseObj(obj1)とかobj1.release()とかを後で呼ぶように指示されてるはず
それを怠ってリークさせたならお前がタコ
そういう指示がないくせに勝手にリークするならそのライブラリがタコ
そんだけの話
必要ならそのGetObj()とやらのドキュメントにDevice::ReleaseXyz()とかDevice::ReleaseObj(obj1)とかobj1.release()とかを後で呼ぶように指示されてるはず
それを怠ってリークさせたならお前がタコ
そういう指示がないくせに勝手にリークするならそのライブラリがタコ
そんだけの話
510はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/18(火) 00:16:34.06ID://OyAtPF0 そして使い方がドキュメント化されてないなら組織として問題がある。
が、そういう話はマ板で。
が、そういう話はマ板で。
511502 (ワッチョイ ae7a-CYkg)
2023/07/18(火) 00:38:24.79ID:ibbV/iYr0512はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/18(火) 01:05:37.37ID://OyAtPF0513デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/18(火) 02:17:55.25ID:BpIlHiPB0 組み込み用途のライブラリで毎回ループ終端でデストラクタが呼ばれるように普通は設計しないから大丈夫
疑わしいならベンダーに問い合わせるかライブラリのソースを読めば解決
疑わしいならベンダーに問い合わせるかライブラリのソースを読めば解決
514デフォルトの名無しさん (ワッチョイ b632-bpoS)
2023/07/21(金) 16:52:12.91ID:PleiVI860 ちょいとコイツを見て欲しい。MSVC 14.36.32532でC++17かつセキュリティチェック無効(/GS-)
https://i.imgur.com/XGfeBgH.png
最小コードで再現するために、コマンドライン文字列を変な形式として扱ってるのは置いといて
変数rSizeが、引数argcのスタック領域(ebp+8)に割り当てられるんだけど、こんな最適化ある?
確かにargcは用済みだが、レジスタやローカルスタックではなくcdeclのconst引数にストアする?
https://i.imgur.com/XGfeBgH.png
最小コードで再現するために、コマンドライン文字列を変な形式として扱ってるのは置いといて
変数rSizeが、引数argcのスタック領域(ebp+8)に割り当てられるんだけど、こんな最適化ある?
確かにargcは用済みだが、レジスタやローカルスタックではなくcdeclのconst引数にストアする?
515デフォルトの名無しさん (ワッチョイ 5cfb-MzNP)
2023/07/21(金) 16:56:19.42ID:LKM5BaGE0 そんなことよりbooost向けの技術書について教えてくれ
516蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd94-5KMR)
2023/07/21(金) 18:04:39.14ID:GfD0zzOHd そんな最適化あるよ。長期に渡って解析やってたらときどき出くわすよ。
517デフォルトの名無しさん (ワッチョイ 82f0-rqn1)
2023/07/21(金) 18:26:11.73ID:eD9pKuA20 ADLについて初めて知ったのがboost::mathだった懐かしい
518デフォルトの名無しさん (ワッチョイ 847c-8c0A)
2023/07/21(金) 20:33:22.11ID:9+qEAU5C0 観測可能な範囲で規格通りの挙動をする限りは、コンパイラ様はどんなバイナリを吐こうとどんな風にメモリやレジスタを扱おうと自由なのだ
519デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 11:54:04.91ID:1sMnnOgP0 if文の条件式のところにがっつり文が書かれてゐる
最後の式の値が結果、とかますますPerl的世界に……
そのうち値を返す関数もreturn書かなくて良くなったりして……
最後の式の値が結果、とかますますPerl的世界に……
そのうち値を返す関数もreturn書かなくて良くなったりして……
520デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/22(土) 12:15:40.55ID:QLIAp4G50 >>519
任意の文を書けるわけではなく単純宣言に限られる。
任意の文を書けるわけではなく単純宣言に限られる。
521デフォルトの名無しさん (ワッチョイ 0710-XcQ/)
2023/07/22(土) 13:25:58.60ID:uVFJqD+w0 うん。なんか「見てくれ」とか言うから見たけどサンプルとしてもしょーもないコードだなと思って
一度コメントしかけてやめた
windowsのxx仕様 独自mainとか
一度コメントしかけてやめた
windowsのxx仕様 独自mainとか
522デフォルトの名無しさん (ワッチョイ 0710-XcQ/)
2023/07/22(土) 13:27:45.64ID:uVFJqD+w0 自分が本当に答えを知りたいんじゃなくて、フレームというか、言い争いを起こして面白がりたいのかな、とか
523デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 15:21:09.39ID:1sMnnOgP0 やっぱ
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が違うアドレスでなければならない理由は何も無いから
同じアドレスに割り当てになる可能性は高いと思う
でデータフロー解析するステップではもはやブロックの構造とか渡ってないから
そういう芸当をする同じロジックが>>514のようなことも当然するキモス
※ 個人の感想です
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が違うアドレスでなければならない理由は何も無いから
同じアドレスに割り当てになる可能性は高いと思う
でデータフロー解析するステップではもはやブロックの構造とか渡ってないから
そういう芸当をする同じロジックが>>514のようなことも当然するキモス
※ 個人の感想です
524デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 15:31:39.00ID:1sMnnOgP0 ていうか補足、
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、
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デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 15:33:20.61ID:1sMnnOgP0 しかしわからんのは
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が同じアドレスに割り当てられ得るのかどうかわわからん……
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:23.03ID:1sMnnOgP0 ゴメ自己解決しますたorz
527デフォルトの名無しさん (ワッチョイ 5f32-vVS+)
2023/07/22(土) 17:02:04.17ID:lBkog51W0 スコープを抜けたローカル変数であれば順当な割り当てに思えるのだけど
>>514が差し支えるのはコードインジェクションで引数を使い回すとかの横着
さりとてトップレベルのconstやvolatileは関数シグネチャに現れない訳で
cdeclであろうと引数の寿命は関数を抜けるまでだろうから極めて妥当なのか?
14.27.29110ではやらず、スタック量は逆に増え…増えたから節約してるのか
rbp+なら…いやそれも引数用スタック。C++20でvolatile非推奨化は有ったが
volatile引数への代入も引数スタックへの書き込みと思っちゃならんのかな
>>514が差し支えるのはコードインジェクションで引数を使い回すとかの横着
さりとてトップレベルのconstやvolatileは関数シグネチャに現れない訳で
cdeclであろうと引数の寿命は関数を抜けるまでだろうから極めて妥当なのか?
14.27.29110ではやらず、スタック量は逆に増え…増えたから節約してるのか
rbp+なら…いやそれも引数用スタック。C++20でvolatile非推奨化は有ったが
volatile引数への代入も引数スタックへの書き込みと思っちゃならんのかな
528はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/22(土) 18:07:10.54ID:QLIAp4G50 >>527
言いたいことがあるなら独り言を書くんじゃなくて説明しろ。
言いたいことがあるなら独り言を書くんじゃなくて説明しろ。
529デフォルトの名無しさん (ワッチョイ bf42-vVS+)
2023/07/22(土) 18:59:44.13ID:h3Z+iL0O0 >>528
どの部分ですか?rbp+のくだりならx64であればシャドウストアを呼び出し元が確保する事になっているので
引数へ代入以外でもrbp+に書き込まれるが、それにしたって引数の退避以外で行われるかという意味だけど
またこの最適化が適正だとすれば引数へconstを指定しても
それは引数の格納元が書き換わらない事を意味しない訳で
volatileにしても引数スタックと同一視は出来ないのかなと
どの部分ですか?rbp+のくだりならx64であればシャドウストアを呼び出し元が確保する事になっているので
引数へ代入以外でもrbp+に書き込まれるが、それにしたって引数の退避以外で行われるかという意味だけど
またこの最適化が適正だとすれば引数へconstを指定しても
それは引数の格納元が書き換わらない事を意味しない訳で
volatileにしても引数スタックと同一視は出来ないのかなと
530デフォルトの名無しさん (テテンテンテン MM8f-TfYz)
2023/07/22(土) 19:01:30.20ID:gun3EJ7PM >>519
resultは欲しいね。
resultは欲しいね。
531デフォルトの名無しさん (ワッチョイ 875f-UuLb)
2023/07/22(土) 19:08:50.81ID:nQhdUCcc0 とりあえずcallee-savedとcaller-savedあたりでググってこい
532デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/22(土) 19:21:42.17ID:QLIAp4G50533デフォルトの名無しさん (ワッチョイ bf79-mRrB)
2023/07/22(土) 23:38:20.21ID:a8PwsTyx0 これだけは言っておく
文章が下手糞はプログラミングも下手糞ってことだ
文章が下手糞はプログラミングも下手糞ってことだ
534デフォルトの名無しさん (ワッチョイ dff0-lmMR)
2023/07/22(土) 23:53:10.56ID:31w2/Kbx0535はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/23(日) 01:23:57.19ID:3Ckw8KVE0 >>533
母語で説明できないようならプログラマには向いてないとかいう意味のことをダイクストラが言ってたな。
普通の人は母語が最も得意なはずだからそれで表現できないのに
プログラミング言語でなら表現できるってことはないのは道理というものだ。
母語で説明できないようならプログラマには向いてないとかいう意味のことをダイクストラが言ってたな。
普通の人は母語が最も得意なはずだからそれで表現できないのに
プログラミング言語でなら表現できるってことはないのは道理というものだ。
536デフォルトの名無しさん (スップ Sd7f-d+yq)
2023/07/23(日) 07:00:15.87ID:TPcdF2Bwd 二、三個違えて大域変数切って火に油注ぎたくなるやつ
537デフォルトの名無しさん (ワッチョイ dff0-FYg4)
2023/07/24(月) 22:04:55.27ID:7/Qlh6bu0 さんざん言われてるけど質問文きちんと書ける人はChatGPTで自己完結しちゃうんだよな
538デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/25(火) 00:09:45.61ID:ngER/Udx0 ゴメス>>524はリリースビルドしたら全部同じアドレスになったわ;;;
やっぱ握った変数なりオブジェクトなりのアドレスを
その変数なりオブジェクトなりの寿命が尽きた後に
使おうとするのは未定義動作であることだなあ、
やっぱ握った変数なりオブジェクトなりのアドレスを
その変数なりオブジェクトなりの寿命が尽きた後に
使おうとするのは未定義動作であることだなあ、
539デフォルトの名無しさん
2023/07/25(火) 03:57:53.89ID:YH2RVZct0 俺には>>524がなんでそんな結論になるのか分からんのだが
for内で i を宣言してるんだからfor のスコープを持つローカル変数だろ?
int が4バイトの前提で言えば for 突入時に int i をスタック上に確保(スタックポインタを4バイトマイナス)して for 離脱時に int i の領域を解放(スタックポインタを4バイトプラス)する
この繰り返しなんだから int i や int ii のアドレスが同じになることに疑問を挟む余地がないと思うんだけど
何がおかしいのか俺にはさっぱり分からん
for内で i を宣言してるんだからfor のスコープを持つローカル変数だろ?
int が4バイトの前提で言えば for 突入時に int i をスタック上に確保(スタックポインタを4バイトマイナス)して for 離脱時に int i の領域を解放(スタックポインタを4バイトプラス)する
この繰り返しなんだから int i や int ii のアドレスが同じになることに疑問を挟む余地がないと思うんだけど
何がおかしいのか俺にはさっぱり分からん
540デフォルトの名無しさん (アウアウウー Sa2b-tGd7)
2023/07/25(火) 09:19:21.66ID:k8WJtY+Ua for の i がローカルになったのは最近
グローバルに盛れるコンパイラ環境は巷に溢れていた
グローバルに盛れるコンパイラ環境は巷に溢れていた
541デフォルトの名無しさん (アウアウウー Sa2b-tGd7)
2023/07/25(火) 09:19:57.50ID:k8WJtY+Ua 盛れるじゃなかった
漏れる
漏れる
543デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 11:32:44.39ID:YIf2r9Dz0 #define for if(0) else for
544デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 11:34:38.41ID:YIf2r9Dz0 間違えた
#define for if(0) {} else for
これでゾンビiよく消してた
#define for if(0) {} else for
これでゾンビiよく消してた
545デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:01:03.86ID:RkQ0FrMx0546デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 12:08:13.03ID:YIf2r9Dz0 VC++6.0という大昔にデファクトスタンダードだったコンパイラだ
547デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:10:00.81ID:RkQ0FrMx0 >>546
ほんとにごめん、何の意味があるの?
ほんとにごめん、何の意味があるの?
548デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 12:12:51.37ID:YIf2r9Dz0 例外飛ばすと自動変数の破棄全部ふっ飛ばして戻ってくる酷いポンコツだったな
よくこんなの皆つかってたなというかコレしかなかったからな
よくこんなの皆つかってたなというかコレしかなかったからな
549はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 12:13:49.52ID:akUn9hsS0550デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 12:14:32.19ID:YIf2r9Dz0551デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:24:31.68ID:RkQ0FrMx0552デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:39:41.95ID:RkQ0FrMx0 『for内スコープ』の仕様にvc6は未対応だ、という事実を認識し
責任者がvc6を選択した案件で納品する
なら、その条件に従って書く(つまらないつまづきに繋がる書き方を避ける)のが他者に対して親切な技術者だと思うが
「そういう話はマ板で」か
責任者がvc6を選択した案件で納品する
なら、その条件に従って書く(つまらないつまづきに繋がる書き方を避ける)のが他者に対して親切な技術者だと思うが
「そういう話はマ板で」か
553はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 12:56:14.20ID:akUn9hsS0 >>551
言語仕様が改訂されたんだよ。
C++98 が成立するちょっと前まで for 文の外側のブロックをスコープとするルールで正しかった。
ARM (The Annotated C++ Reference Manual) でも旧ルールで説明されている。
VC の出来が悪かったのは事実だと思うが
スコープルールに関しては互換性を是とするウィンドウズの価値観に合わせて
意図的に変更を遅らせたのだと思う。
言語仕様が改訂されたんだよ。
C++98 が成立するちょっと前まで for 文の外側のブロックをスコープとするルールで正しかった。
ARM (The Annotated C++ Reference Manual) でも旧ルールで説明されている。
VC の出来が悪かったのは事実だと思うが
スコープルールに関しては互換性を是とするウィンドウズの価値観に合わせて
意図的に変更を遅らせたのだと思う。
554デフォルトの名無しさん (ワイーワ2 FF9f-fo+T)
2023/07/25(火) 14:00:38.34ID:uSv6E5akF いと懐かしき
555デフォルトの名無しさん (ワッチョイ 8702-Jlgx)
2023/07/25(火) 14:23:07.06ID:kV+p+cpE0 Visual C++ 6.0がリリースされたのが1998年じゃん
25年前じゃん。全然最近じゃないじゃん
遠い過去のことをつい最近って話すのはやめてほしいね
25年前じゃん。全然最近じゃないじゃん
遠い過去のことをつい最近って話すのはやめてほしいね
556デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/25(火) 14:31:50.00ID:MikqYz6X0 >>555
だまれ小僧! 最近じゃよ
だまれ小僧! 最近じゃよ
557デフォルトの名無しさん (ワッチョイ df32-8suU)
2023/07/25(火) 14:44:27.15ID:vokyohz+0 20年くらいまえのソースコードだったら
読む機会がないわけでもないからなぁ。
最近と言えるかどうかはともかくとして
経緯を知っておくに越したことはない
読む機会がないわけでもないからなぁ。
最近と言えるかどうかはともかくとして
経緯を知っておくに越したことはない
558デフォルトの名無しさん (アウアウウー Sa2b-QKap)
2023/07/25(火) 14:44:43.95ID:iTChcdyRa 25年前に30代だった人の多いスレ
559デフォルトの名無しさん (ラクッペペ MM8f-pwGU)
2023/07/25(火) 14:54:13.97ID:218oSqZIM 現役世代なら25年前なら20代
560デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/25(火) 14:55:29.80ID:MikqYz6X0 だまれ小僧ども!
561デフォルトの名無しさん (ワッチョイ dff0-FYg4)
2023/07/25(火) 16:16:06.83ID:uXZxGhnB0 おじいちゃんかな入力使ってそう
562デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/25(火) 16:50:53.20ID:akUn9hsS0 リアルで トントカイモ をやったことある世代だわ……
563デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 20:33:32.87ID:RkQ0FrMx0564デフォルトの名無しさん (ワッチョイ bf79-mRrB)
2023/07/25(火) 21:15:39.67ID:2EbZvvbp0 (昔話うぜー)
565はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 21:54:33.88ID:akUn9hsS0 >>563
古い規格に基づいたコードが消滅しているならそれでもいいけどさ。
古い規格に基づいたコードが消滅しているならそれでもいいけどさ。
566デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/25(火) 22:52:02.65ID:ngER/Udx0567はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 23:10:43.20ID:akUn9hsS0 アドレスとエイリアスは別枠なんだわ。
ポインタを数値として表示させると同じなのに == で比較すると偽値 (エイリアスではない) ということがあり得る。
pointer provenance の概念について調べてみると面白いかもね。
ポインタを数値として表示させると同じなのに == で比較すると偽値 (エイリアスではない) ということがあり得る。
pointer provenance の概念について調べてみると面白いかもね。
568デフォルトの名無しさん (ラクッペペ MM8f-pwGU)
2023/07/26(水) 07:52:30.48ID:Ymbp6+unM 古いコードに執着しはじめるならもういい加減引退した方がいい
569はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/26(水) 13:05:53.40ID:Z/zSkMd/0 >>568
誰かが書き換えなきゃ新しくはならんのだぞ。
誰かが書き換えなきゃ新しくはならんのだぞ。
570デフォルトの名無しさん (ラクッペペ MM8f-pwGU)
2023/07/26(水) 14:04:23.46ID:nSMXTC2xM まったく無いとは言わないが20年以上も昔のコードを弄る機会って実際どれくらいあるのか
あまりに不毛な主張だろう
あまりに不毛な主張だろう
571デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/26(水) 14:22:14.82ID:x/JHBN7Z0 >>129
これが実現出来ればそういう心配事も無くなるんだがな
これが実現出来ればそういう心配事も無くなるんだがな
572はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/26(水) 14:24:26.98ID:Z/zSkMd/0 ちなみに俺は少なくとも C++11 以降だろ (C++20 は時期尚早かもしれない) 派だし
趣味でプログラミングしているから実務現場はわからない。
でも確実に 20 年前くらいのコードは生きてるよ。
質問サイトで (古いコードの意味について尋ねる質問に対して) 歴史的な事情を説明したことは何度もあるから。
それが割合としてどんくらいかというと確かに少なくはあると思うが……。
趣味でプログラミングしているから実務現場はわからない。
でも確実に 20 年前くらいのコードは生きてるよ。
質問サイトで (古いコードの意味について尋ねる質問に対して) 歴史的な事情を説明したことは何度もあるから。
それが割合としてどんくらいかというと確かに少なくはあると思うが……。
573デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/26(水) 17:59:22.96ID:EGwoK+U90 11は妥当かも。新しいauto は11から一部、で14で増えた訳よね
C++の仕事で、例えばauto使ったらダメって言われたら、工エエェェ(´д`)ェェエエ工 アンタ達何でCじゃなくてC++使ってるん?てならんか
(マ板的な話でごめんね)
仕事で、Cで未だに99がダメとかいう頭おかしい現場もあり、問い詰めると周辺ツール整備の予算の都合と言い訳される。そういうのを切る政治のために喫煙所活動したり、元社の海外部署の圧を使ったりする
まあでも、自衛隊の武器でもC++あったよ…ただ、武器にはちゃんと使用期限があって。5年とか。継続で使いたい場合には再整備事業が起きる。次の期限いっぱいまで修理可能であるように求められるのね
新規は14以上、保守は11以上、は妥当かもね
C++の仕事で、例えばauto使ったらダメって言われたら、工エエェェ(´д`)ェェエエ工 アンタ達何でCじゃなくてC++使ってるん?てならんか
(マ板的な話でごめんね)
仕事で、Cで未だに99がダメとかいう頭おかしい現場もあり、問い詰めると周辺ツール整備の予算の都合と言い訳される。そういうのを切る政治のために喫煙所活動したり、元社の海外部署の圧を使ったりする
まあでも、自衛隊の武器でもC++あったよ…ただ、武器にはちゃんと使用期限があって。5年とか。継続で使いたい場合には再整備事業が起きる。次の期限いっぱいまで修理可能であるように求められるのね
新規は14以上、保守は11以上、は妥当かもね
574デフォルトの名無しさん (テテンテンテン MM8f-TfYz)
2023/07/26(水) 20:17:04.26ID:zBy57xkKM 動的に重たい機能(例外とか)を取り除いたembeded c++に再チャレンジしてほしいわ。
c with structure and template くらいの。
c with structure and template くらいの。
575デフォルトの名無しさん (ワッチョイ 077c-N/av)
2023/07/26(水) 20:27:29.80ID:qeWM+gpE0 また禿に死ぬべきだって言われるだけだぞ
576デフォルトの名無しさん (ワッチョイ dff0-FYg4)
2023/07/26(水) 20:36:31.16ID:J6WrB9lP0 俺も趣味でしか使ってないけど、OSSのメンテやってる外人がCで書かれたコードのこと
クソの山と呼んでるのを見かけてみんなそう思ってると信じちゃった
クソの山と呼んでるのを見かけてみんなそう思ってると信じちゃった
577デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/26(水) 20:45:03.48ID:T1zuvG990 「クソの山」って英語で何ていうの?
578デフォルトの名無しさん (ワッチョイ dff0-4APs)
2023/07/26(水) 20:47:33.68ID:e36yYIxR0579デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/26(水) 21:11:20.60ID:T1zuvG990 My intestine is a kind of FIFO.
580デフォルトの名無しさん (ワッチョイ 0720-rRCM)
2023/07/26(水) 21:14:18.52ID:4fMh7lxL0 bullshit
581デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/26(水) 21:21:43.95ID:Z/zSkMd/0 >>576
現実がクソなんだよ。
それでもコードにしなきゃならないところ(低レイヤとか速度がいるところとか言語を跨ぐインターフェイスとか)でCが使われるから必然的にクソになる。
他の言語で書いたところでたぶんクソだぞ。
現実がクソなんだよ。
それでもコードにしなきゃならないところ(低レイヤとか速度がいるところとか言語を跨ぐインターフェイスとか)でCが使われるから必然的にクソになる。
他の言語で書いたところでたぶんクソだぞ。
582デフォルトの名無しさん (オイコラミネオ MM3b-nVDU)
2023/07/26(水) 22:07:29.96ID:iOxX8HKcM 自分としては古いC++のコードの方がクソの山に見える
Cはまだまし
Cはまだまし
583デフォルトの名無しさん (ワッチョイ 6701-I2OL)
2023/07/26(水) 22:16:26.68ID:jPIzcFjy0 5chからの新しいお知らせは、他の板には出ないんだな
584デフォルトの名無しさん (ワッチョイ 67c0-CvEJ)
2023/07/27(木) 04:04:24.35ID:QeVlkja60 古い事自体は悪い訳ではないよね
質が低いけど影響範囲が大きくて修正されずに生き延びてる糞コードが悪いだけで
質が低いけど影響範囲が大きくて修正されずに生き延びてる糞コードが悪いだけで
585デフォルトの名無しさん (ワッチョイ bf9a-0/k/)
2023/07/27(木) 09:00:04.57ID:zEDi2bcm0586デフォルトの名無しさん (アウアウウー Sa2b-QKap)
2023/07/27(木) 09:00:15.65ID:GoQM94Wca587デフォルトの名無しさん (ワッチョイ 8702-Jlgx)
2023/07/27(木) 09:39:10.27ID:4LOg1fU50 >>576
PythonとかJavaScriptだけの世界に生きてる人たちはC++はクソとか言ってそうな気がする
PythonとかJavaScriptだけの世界に生きてる人たちはC++はクソとか言ってそうな気がする
588デフォルトの名無しさん (アウアウウー Sa2b-QKap)
2023/07/27(木) 09:49:28.34ID:GoQM94Wca 実際C++は糞だと思う
Cの方がマシ
Cの方がマシ
589デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/27(木) 10:16:37.98ID:+SEMblDr0 VCでビルドしたC++ライブラリって
mingwでビルドしたオブジェクトファイルとリンクできないよね?
Cライブラリだとできるけども
mingwでビルドしたオブジェクトファイルとリンクできないよね?
Cライブラリだとできるけども
590デフォルトの名無しさん (ワッチョイ 0710-IJmj)
2023/07/27(木) 10:25:00.16ID:uqLQvp0Q0 c++だとマングリングの規則がコンパイラごとに違うから無理なはず
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 偏差値35大臣「すぐに経済的威圧するところへの依存はリスク」 [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【朗報】高市、中国からの日本行き空路49万件キャンセルを達成🤩オーバーツーリズム対策の手腕が光る [359965264]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
