- Win32API質問箱 Build121 [転載禁止]©2ch.net
810 :デフォルトの名無しさん[sage]:2015/12/08(火) 12:37:52.55 ID:zjJIjn6V - >>806
別人がなりすましで書き込んでいるだけだからね IMEをグーグル日本語入力に変えてフリーズしなくなったから 本人的にはもう解決している話
|
- C++相談室 part121 [無断転載禁止]©2ch.net
102 :デフォルトの名無しさん[sage]:2015/12/08(火) 15:56:10.25 ID:zjJIjn6V - 「同一アドレスへの複数スレッドのアクセスが未定義動作」
だからといって コンパイラは無視して最適化したりしないけどね むしろ別スレッドから値を変更される可能性を考えて 毎回メモリからレジスタにロードしなおすコードを吐くと思うがね 確実に自分のスレッドからしかアクセスしてない自動変数 つまり、自動変数のアドレスを逆参照して別の関数に渡していたりとかしていない 自動変数に関しては、変更がなければレジスタに置きっぱとかといった最適化がかかるが オブジェクトのメンバとかグローバル変数とかはアクセスするたびに 毎回メモリからロードすると思うし だからこそ int i = obj.member; とかやって一旦自動変数に入れることで コンパイラの最適化を促すテクニックが広く知られているわけだが
|
- GCは失敗。メモリは自分で管理せよ! その2©2ch.net
249 :デフォルトの名無しさん[sage]:2015/12/08(火) 16:16:30.38 ID:zjJIjn6V - 参照がなくなったタイミングで必ず開放してくれて
かつ 循環参照でも問題ない パーフェクトなGCが有れば最高なわけだが 実際にはそんなGCは無い となれば、通常であれば言語側は性質の異なる複数のGCを用意しておいて 使う側はシチュエーションに合わせて選べるようにしておくのが自然な発想 しかしそういう言語は殆ど無い、これが問題 といってもマークスイープ系GCが前提のC#やJavaのような言語に RAIIの発想を持ち込もうとしても C++のデストラクタのように自身のメンバのデストラクタを自動で芋づる式に呼び出す仕組みが 元々無いので、手動で芋づる式に解放関数を呼び出すコードを書かなければならなく うまく行っていない
|
- 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
92 :デフォルトの名無しさん[sage]:2015/12/08(火) 16:27:08.06 ID:zjJIjn6V - ところで結局
(unsigned)(i) と unsigned(i) は何が違うの? 危険度は同じでは?
|
- GCは失敗。メモリは自分で管理せよ! その2©2ch.net
251 :デフォルトの名無しさん[sage]:2015/12/08(火) 16:37:24.80 ID:zjJIjn6V - >>250
自分のクラスがファイルなんかのcloseを持つリソースをメンバに持っていたとする そうすると、それらのメンバのリソースを明示的にcloseできるようにするために 自身もcloseを実装することになるだろう それで、自身のcloseが呼ばれた時、勝手にメンバのcloseが呼ばれるか? 結局手動でメンバのcloseを呼び出しまわるコードを書かなければならない C++のデストラクタならメンバのデストラクタが芋づる式に勝手に呼び出されるから 気にしなくて良い
|
- C++相談室 part121 [無断転載禁止]©2ch.net
105 :デフォルトの名無しさん[sage]:2015/12/08(火) 16:54:20.27 ID:zjJIjn6V - そう思うんなら試してみればよいだろう
いくら排他処理が完璧でも 前にレジスタにロードした古い値を使いまわして 新しい値が反映されなかったとしたらバグるだろう ある値はたまたまレジスタに残ったままになっていたから古い値のまま、そのまま使って 別の値はたまたまレジスタに残っていなかったから新しい値をロードしなおして ちぐはぐのままプログラムが走ったらクラッシュするだろ だからクラスのメンバやグローバル変数はvolatileじゃなくても毎回ロードするのが普通 さもなくば、関数でローカルな変数以外の全ての変数をvolatileにしないとダメになるけど そんなことしなくても大丈夫なようになっている
|
- C++相談室 part121 [無断転載禁止]©2ch.net
106 :デフォルトの名無しさん[sage]:2015/12/08(火) 16:58:26.76 ID:zjJIjn6V - 第一、C++で高速化を狙うときに
メンバ変数を自動変数に代入して使うというのは有名なテクニック
|