1 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 23:06:15.32 ID:HdItgJjm.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part121 peace.2ch.net/test/read.cgi/tech/1449240881/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1439849418/ 次期規格C++1zはこちら C++14/C++1z 20 peace.2ch.net/test/read.cgi/tech/1410382924/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/
39 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 18:39:25.59 ID:6iy9dS6b.net] >>25 https://ideone.com/xLFO7G ・オリジナルの変数の依存関係と丸出しスタイルはそのまま ・メソッド名とかは一部変えた ・生のポインタだけで運用 ・deleteは一箇所で一括に行う ・もっとスッキリすると思ったが書いてみると意外とそうでもなかった
40 名前:5 mailto:sage [2016/01/25(月) 18:42:58.12 ID:2nNO2C2F.net] >>38 >れっきとしたデザパタ GoFのデザパタではないんですね。勉強します。 >とりあえずC2、C3が必ずC1を含むなら、 C3が含むのはC1ではなくC2です。IdeoneではC3は省いていますが。 >もしかしてC3やC2とC1の持つA/Bって別なん? いえ、同じです。 実際のやりたいコードは2次元の幾何です。もっと早く言うべきだったかもしれません、すいません。 C1が点、C2が点を繋いだ線、C3が線で囲まれる多角形、BやAはそれらの上位のクラス(geometryみたいな名前)です。
41 名前:5 mailto:sage [2016/01/25(月) 18:57:41.09 ID:2nNO2C2F.net] >>39 インスタンスを所持するテンプレートクラスを作るのですね。勉強になります。
42 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 19:12:59.35 ID:3jdDpl0p.net] >>40 んーすまん、それでなんでこの設計になるのかわからん とりあえずC1から取れるしC2/C3にA/Bのポインタいらないんじゃね 実現したいことがわからないが 幾何の表現なら一次元vectorで十分じゃね index用vectorでn次元の部分集合の指定もできるし
43 名前:5 mailto:sage [2016/01/25(月) 20:00:38.31 ID:2nNO2C2F.net] >>42 >とりあえずC1から取れるしC2/C3にA/Bのポインタいらないんじゃね それは仰る通りです。 ただ、c2->listC1[0]->refB とC1を辿るのが面倒だったのでC2に持たせてしまいました。 >実現したいことがわからないが うーん、そんな変でしょうか? 実は幾何の入出力ファイル(他者製)もこのクラスの親子関係そのままのフォーマットになってて、 それをコードでも踏襲したという経緯です。
44 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 20:18:32.30 ID:MTh5r7jR.net] 2次幾何の何がやりたいのか分からないって話じゃない? 接触判定でもしたいの?
45 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 20:28:56.97 ID:qUtW41iV.net] >>26 ISO/IEC 14882:2014の8.5p6を読む限りパディングはビット0になると読めるのだが不定になると言う根拠は?
46 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 20:44:54.74 ID:qUtW41iV.net] ちなみに8.5.1をさらりと読んだが > hoge d = { 0, 0 }; に限ってはパディングがゼロ梅になるという記述が見つけられなかった
47 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 21:14:32.48 ID:3jdDpl0p.net] >>43 >うーん、そんな変でしょうか? 変っていうかC1,C2,C3が何の表現なのかわからん
48 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 21:16:12.13 ID:MTh5r7jR.net] うーん・・・・・・ 確かによく読むと、x={}はx()に等しく、x()はvalue-initializedされて、 user provided constructorが存在しない場合はzero-initializerが走って、 その場合にはpaddingも0になるみたい。 規格準拠を仮定するなら君が正しい。嘘書いてごめんよ。
49 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 21:28:05.05 ID:3jdDpl0p.net] >>45-46 そんなメガネクイーしてる暇あったら引用すりゃよくね? >To zero-initialize an object or reference of type T means: >... >if T is a (possibly cv-qualified) non-union class type, each non-static data member and each base-class subobject is zero-initialized and padding is initialized to zero bits; >if T is a (possibly cv-qualified) union type, the object’s first non-static named data member is zero initialized and padding is initialized to zero bits;
50 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 22:02:04.00 ID:aGf3VXDj.net] >>45-46 >26 じゃないけど、 構造体のパディングバイトが全ビット 0 になる保証はあるんだけど、 int を 0 に初期化したときにパディングビットも含めて全ビットが 0 になる保証は見当たらないんだ。 パディングビットがある環境も少ないだろうし、あるとしても numeric_limits<int> とか調べれば事前に 有無が確認できるとは思うけど。
51 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 22:06:48.30 ID:aGf3VXDj.net] >>32 > Tのコンストラクタが例外を投げると、fは走らずに例外がcatchされる。そしてthisが宙ぶらりんになって誰からも開放出来なくなる。 ... > 一方でshared_ptr(new T());だとTのコンストラクタがコケるとメモリリークが起こる。 んなこたーない。 www.kijineko.co.jp/tech/superstitions/memory-leak-at-dynamic-creation-fail.html
52 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 22:11:13.46 ID:aGf3VXDj.net] >>39 > A *a(int i) {return as.add(new A(i));} add() の中の push_back() で例外飛んだらリークする。 変な独自コンテナラッパーなんか作らないでおとなしくスマートポインタ使えばいいのに。
53 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 22:45:59.01 ID:u8HkWBJk.net] >>30 こういう誤りによるメモリリークを根絶するため new自体がソースコード上に現れるのを避けるのが普通 f(unique_ptr<A>(new A), unique_ptr<B>(new B)); ちなみにコンストラクターの例外は関係無い
54 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 22:51:40.35 ID:MTh5r7jR.net] >>51 これは知らなかった。 それ自身のdtorは走らないみたいだから、fopenしてたり生のポインタ使ってたりすると危ないかも。 ideone.com/IOYMAt
55 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 22:55:07.69 ID:ATEV5j5o.net] >>52 > push_back() で例外飛んだら www.cplusplus.com/reference/vector/vector/push_back/ > If a reallocation happens, the storage is allocated using the container's allocator, > which may throw exceptions on failure (for the default allocator, > bad_alloc is thrown if the allocation request does not succeed). ↑これのこと?
56 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 22:57:30.92 ID:aGf3VXDj.net] >>55 うん。
57 名前:5 mailto:sage [2016/01/25(月) 23:27:49.38 ID:2nNO2C2F.net] >>31 により当初の目的だったweak_ptrの排除ができ、またスマポの使用が今回の場合 不適切というわけではなさそう(というか自分的にはベストな解)ことが分かり 満足したので、質問を締めさせていただきます。 回答くれた方どうもありがとうございました。
58 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 23:46:30.78 ID:u8HkWBJk.net] >>50 パディングビットの規定を探したらCにたどり着いた これでよい? C++ 3.9.1p3 Fundamental types → C言語 5.2.4.2.1 Size of integer types → C言語 6.2.6 Representations of types → C言語 6.2.6.2.5p5 Integer types 『The values of any padding bits are unspecified.』
59 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 23:59:58.70 ID:aGf3VXDj.net] >>58 そんなところ。 Cでも保証は無いよね。あったところでC++で「保証」とはいえないんだけど。
60 名前:デフォルトの名無しさん [2016/01/26(火) 00:41:34.27 ID:LScUQqmU.net] >>57 とりあえずOpenGLとか触ったほうが良いと思います
61 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 00:45:45.80 ID:GVbqnwMe.net] >>60 なんで?
62 名前:デフォルトの名無しさん [2016/01/26(火) 00:55:25.80 ID:LScUQqmU.net] >>61 データ構造が見えてなさそうだから
63 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 01:15:04.16 ID:88T0+SoF.net] 3D空間上でvertexはedgeを、edgeはfaceを、faceはelementを構成するっていうデータ構造はごく普通でしょう むしろ>>42 みたいに全部vectorでやれとかいうほうがおかしい
64 名前:デフォルトの名無しさん [2016/01/26(火) 01:20:06.74 ID:LScUQqmU.net] >>63 内包させるのは普通じゃないよ
65 名前:デフォルトの名無しさん [2016/01/26(火) 01:25:45.01 ID:LScUQqmU.net] というか >vertexはedgeを、edgeはfaceを、faceはelementを構成するっていうデータ構造はごく普通でしょう こんなの見たこと無いよ 普通は各々verticesとして持ってるでしょ
66 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 01:29:56.87 ID:88T0+SoF.net] >各々verticesとして持ってる 意味がわからない elementとかの定義をvertexのリストだけでやるの? tetraやhexaならいいけどpolyhedronはどうするの?
67 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 01:38:32.76 ID:usMbn1Xz.net] 「普通」とか「おかしい」とか主観でモノを言っちゃうからめんどうなことになる。 >63はそういう構造をよく使う、あるいはよく見る。 >65はそういう構造を見たことが無い。 それだけのことなら相手に合意を迫る必要はまったく無い。 同じものを作ってるなら話は認識あわせに意味があるかもしれないけど、 ここじゃアカの他人なんだからそんなこともあるじゃろ、でおしまい。 二人とも、もう寝たほうがいいよ。
68 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 01:38:35.41 ID:zaDrFWLK.net] メッシュ変形なんかやるときは別だけど OpenGLで表示させるだけなら普通は頂点とインデックス列だけで事足りる
69 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 02:02:32.36 ID:88T0+SoF.net] そっかごめん 自分機械設計屋なんだけど、流体シミュレーションだとpolyhedron要素があるんで こういうデータの持ち方するのよね OpenGLは使ったことないっす
70 名前:デフォルトの名無しさん [2016/01/26(火) 02:53:27.61 ID:LScUQqmU.net] 多面体使う人でもEdge主体の構造じゃないのか? まあもういいや大した話じゃないし
71 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 07:13:49.17 ID:8rZ+8lOF.net] そこそこまっとうなことを言っているのに理解されなかった>>63 が哀れ(チーン)
72 名前:デフォルトの名無しさん [2016/01/26(火) 07:26:37.18 ID:RIXqMqyc.net] 結局パディングはUMRんですか
73 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 13:43:58.10 ID:CloTf5dE.net] >>71 書き方が悪いんだよな プログラマの思考と反対というか elementは複数のfaceで構成され faceは複数のedgeで構成され edgeは複数のvertexで構成される ていう書き方の方がよかったと思われ
74 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 15:23:46.68 ID:VGU1ghG/.net] >>73 いや、表現の問題じゃないでしょw ちなみに俺はそっちより>>63 のボトムアップ的な発想の方が自然 あんまり階層構造つくって持ちまわるよりは フラットにしたほうが結局ラクなんじゃないかって発想には 俺も個人的には同意する
75 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 16:05:26.42 ID:MwP9iauO.net] 継承を行うと親クラスのコンストラクタが隠蔽されてしまうのですが、 コンストラクタが継承されないこの仕様にはなにか深い訳があるのでしょうか。 多重継承が関係しているような気もするのですが、 そもそも単一継承のJavaも同様の仕様なのでもっと根本的な理由があるのだと思うのですが。
76 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 16:07:43.83 ID:MwP9iauO.net] すみませんサンプルの貼り付けを忘れていました。 ideone.com/v8QQHq
77 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 16:29:07.16 ID:uqIl8Fge.net] >>75-76 サンプル 10 行目の注釈はないものとして struct X : public Base { X(int i) : Base::Base(i) {} // 子から間接的に呼び出す必要がある }; と書くのはいかんの? Base() だけで自動的に Base::Base() を呼んで欲しいってことかな。
78 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 16:39:57.28 ID:XdnYao0l.net] 派生クラスをインスタンス化するときに派生クラスのコンストラクタは 呼び出さないで基底クラスのコンストラクタを直接呼び出したい? そんなこと出来ないのは当たり前なのだが そんなことしたくなる深い訳の方が気になる
79 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 16:40:10.39 ID:CloTf5dE.net] 例えば有名なモデリングソフトのメタセコイアのMQOファイルはモデルを>>73 みたいに記述してあるよ ただしedgeは無く、面は複数の頂点で表現されてたが エレメントが複数の面で構成されるのは仕方ないし 面が複数の頂点で構成されるのも仕方ないように思うが なんでもフラットな方が便利なのは常識だが 一体どうやってフラットにするのか興味があるわ struct face{ int elem_no; float v[16][3]; int v_size; }; vector<face> faces; こんなデータ構造じゃ、特定のエレメントだけ抜き出すのが大変だし さらにもっとフラットにして struct vertex{ int elem_no; int face_no; float v[3]; }; vector<vertex> vertices; こんな構造にしちゃうと、かなりフラットになるが、面単位で何かするのに まず同じface_noに属する頂点を探し回らなきゃならなくて超面倒なんだが さらにもっとフラットにすると struct vertex_elem{ int elem_no; int face_no; int vertex_no; int x_y_z_flag; float value; }; さすがにこれは無いか
80 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 16:48:50.66 ID:XdnYao0l.net] X(int i) : Base(i) {} を書くのが面倒くさいということか? それを自動生成するのは条件を絞れば可能かも知れんが余計に分けわからなくなりそう
81 名前:77 mailto:sage [2016/01/26(火) 16:51:07.74 ID:uqIl8Fge.net] >>77 は勇み足だった。C++11だと下のように書くか。 #include <iostream> using namespace std; struct Base { int i; Base(int i) : i {i} { cout << "ok! I got " << i << endl; } }; struct X : public Base { X(int i) : Base {i} {} // Base::Base() でなく }; int main() { X x {1}; // Base側のコンストラクタを呼べるでしょ cout << "Yes, x.i == " << x.i << endl; return 0; } 明示的なコンストラクタ呼び出しでなく {} による初期化。
82 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 17:13:30.76 ID:MwP9iauO.net] >>80 そうです、Baseを継承する派生クラスが沢山ある場合が面倒です。 コンストラクタの継承が行われれば、派生クラス側でわざわざ決まりきったコンストラクタを書かずに済むのでコードがシンプルになるなのですが、 それが出来るオブジェクト思考言語は意外と少ないです。
83 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 17:37:45.67 ID:5mNKNaDj.net] >>82 class B { public B() {System.out.println(
84 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 17:39:33.39 ID:JvvEVEHG.net] ダブルクォーテーションで途切れるの悔しい… >>82 class B { public B() {System.out.println(”B”);} public B(int i) {System.out.println(”B i”);} } class D1 extends B {} // 自動的に追加されるコンストラクタ内で暗黙的にsuper() class D2 extends B {public D2(int i) {}} // 暗黙的にsuper() class D3 extends B {public D3(int i) {super(i);}} のとき new D1();new D2(1);new D3(1); でそれぞれ B, B, B iを表示 Javaだと引数無しのときだけチョッと手間省けるね
85 名前:84 mailto:sage [2016/01/26(火) 17:46:54.81 ID:LDY5A4Ql.net] ごめん、今確かめたらそれはC++でも一緒だったw struct Base { int i; Base() : i(0) { cout << ”ok!”; } }; struct X : public Base {}; これで X x; は普通に行けたねw
86 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 17:50:26.64 ID:XdnYao0l.net] >>82 なるほど。それなら分かるわ 基底クラスのコンストラクタはある意味継承されてるんだけど protected(ちょっと違うけど)みたいな扱いになってるんだよな 何かキーワードとかであなたの言う意味での継承が出来てもよい気がしてきた
87 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 18:41:50.54 ID:/Dc76BnU.net] >>75 釣りは要らん その内 コンストラクターの継承も知らないのかバーカバーカ と言うんだろ?
88 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 19:55:14.89 ID:XdnYao0l.net] 釣られたわ C++11から出来るようになってるね ideone.com/PwOSrY
89 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 20:04:25.08 ID:yZwoVaS8.net] >>88 それで十分に嬉しいように見えるんだけど using Base::Base;の一行を書くのは>>75 的には 「子から間接的に呼び出す必要がある」に該当しないのかな? あと>>77 が何を言っているのか意味不明なの俺だけ?
90 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 21:25:05.76 ID:I8Y70xN6.net] >>51 これってコンストラクタ中から例外飛んで来たらいずれにせよメモリリークするから無駄って解釈でいいの? この例だとdeleteはされるけど、結局デストラクタが呼ばれるわけじゃないからメンバにポインタ混じっててnewしてたりするとリークするよな
91 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 21:52:07.33 ID:8rZ+8lOF.net] 構築が終わっていない中途半端な状態でデストラクターが呼ばれたらそれこそ大変だ 少しは脳みそ使った方がいいぞ
92 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 22:52:14.01 ID:IXu06oBB.net] C++ではインスタンスxのコンストラクタ内で例外が発生した場合、 xのデストラクタは呼ばれない(理由は>>91 の通り という言語仕様なのは真実なので、逃げ手としてnewに細工がしてあるだけの話 生のハンドルとかはこれそのものでは救えない。 コンストラクタで生のハンドルを確保するコードを普通に書いたら、コンストラクタが例外を生じたときにリークする それを避けるための正しいテクニックは、 1) きちんとハンドル(リソース)のwrapperを書いて、 2) そいつをxのメンバにしとく である(メンバのデストラクタは、xのコンストラクタが例外を生じても呼ばれる んまー常識的には「コンストラクタで例外を発生させない」とか「例外が発生したら諦める」設計のが 特殊な用途以外では普通な希ガス、
93 名前:92 mailto:sage [2016/01/26(火) 22:56:25.94 ID:IXu06oBB.net] >>92 プチ訂正 s/コンストラクタ内で例(が|を)発生/コンストラクタから例外をスローさせない/g コンストラクタ内で例外が発生しそうなところはtry { } catch { }で囲ってしまうのも一つの手ではある
94 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 22:58:40.82 ID:usMbn1Xz.net] >>90 RAII の徹底ができていなければリークする可能性が出てくる。 例外の発生がコンストラクタからかどうかはあんまり関係ない。
95 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:02:54.28 ID:RBo8KHcc.net] やはりバカにはC++の敷居が高いようだな
96 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:05:13.87 ID:8rZ+8lOF.net] ラッパーを使うのは王道な一つの手だが 一つの関数内で例外安全なコードを書いてればリークは起こらない。 それすら出来ないようでは他の言語を使った方がいい 「コンストラクタで例外を発生させない」と言うのはやや方向性が違っていて 「プログラムを書かなければリークは起こさない」レベルの思考
97 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:06:58.14 ID:zcSlqmoV.net] >>95 自己紹介はしなくていいぞ
98 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:12:32.60 ID:I8Y70xN6.net] じゃあもしライブラリとして提供されてるクラスがメンバに複数ポインタ持っててコンストラクタで複数newして、しかもメモリが足りなくなる可能性が結構高い場合はどうすりゃいいんだ? 他のライブラリ使うのはいろんな理由で無理、ライブラリの互換性のために元のソースいじれないってなったら漏れたらあきらめるしかないのか?
99 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:14:58.68 ID:8rZ+8lOF.net] 例外安全でない糞ライブラリの中身をいじれない場合はどうすればよいの? 質問しなきゃわからないほど馬鹿なのか
100 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:22:01.99 ID:I8Y70xN6.net] >>99 今まさに近い状況になってて、例外飛んでくるのはまた別の原因なんですけど 実際どうすればいいんですか?自分一人だけライブラリ使わないってのはできないんですけど
101 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:23:01.51 ID:CloTf5dE.net] まぁでもコンストラクタの途中で例外が発生しても コンストラクタの中でtry-catchして適切にリソース開放すれば良いだけでは?
102 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:23:51.29 ID:4LzhB3JY.net] 例外処理でメモリリークを気にしたりするのがナンセンスなんよ 例外起きたらあとはリソース閉じて終了するだけのことだから アプリケーションとしては終了に向かうだけだからリークも糞もないんよ
103 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:27:16.38 ID:XdnYao0l.net] >>100 ライブラリがバグってるならどうしょうもないだろ >>102 ずいぶんとおめでたい世界にいらっしゃるようで
104 名前:デフォルトの名無しさん [2016/01/26(火) 23:28:08.68 ID:sH2SZupb.net] コンストラクタで例外が発生したらそのクラスの何を解放するんだ
105 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:28:59.31 ID:4LzhB3JY.net] mallocに失敗したのにexit前にfreeを呼びたい みたいな不思議な連中は一定おるんよ
106 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:30:11.03 ID:8rZ+8lOF.net] >>101 おおまかにはそれでよいが 最低限 例外中立にしとくのがマナー 具体的にはfunction-try-blockを使うかthrow;で再スローするかラッパーを使うか
107 名前:デフォルトの名無しさん [2016/01/26(火) 23:30:13.68 ID:sH2SZupb.net] 例外発生する=アプリを終了するってなんなんだよ
108 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:30:33.16 ID:XdnYao0l.net] >>104 例外発生するまでに確保済みのリソース そんな面倒なことにならないようにRAIIの徹底はもう必須だよ
109 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:31:01.96 ID:CloTf5dE.net] ちなみにnewしたオブジェクトのコンストラクタ内で例外が発生した場合 デストラクタは走らないけどoperator deleteは呼ばれるからメモリリークしないよ
110 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:34:08.88 ID:TGWAfBDP.net] >>98 その通りだよ。
111 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:38:07.07 ID:8rZ+8lOF.net] >コンストラクタ内で例外が発生した場合デストラクタは走らない 揚げ足を取ると、走るケースが全くない訳ではない
112 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:44:41.90 ID:usMbn1Xz.net] >>111 ほんとならくわしく。
113 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 00:02:05.29 ID:zgyqI55G.net] >>112 コンストラクタ内で例外が発生してもコンストラクタ内でキャッチしてしまえば走らない コンストラクタ内で例外が発生してもコンストラクタ内でキャッチしてしまえば走らない
114 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 00:02:50.96 ID:zgyqI55G.net] ごめwwwwwwww 走るの間違いwwwwwwwwww
115 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 00:04:30.16 ID:0q1DRp6s.net] 触れないソースのリソースリークなんて気にしても仕方ないだろ 気持ち悪いけど放っておけ
116 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 00:13:07.10 ID:zgyqI55G.net] 普通に使ってリソースリークの危険があり、 かつユーザーの立場からリークを阻止する手段が無いというのは ライブラリのバグと言って過言ではない
117 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 00:34:28.52 ID:zSFGO6dq.net] いや普通にバグだから
118 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 00:47:13.92 ID:tYkYQITg.net] それでお客様が納得してくれるとでも?
119 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 00:52:40.92 ID:0q1DRp6s.net] 仕様ですの一点張り
120 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 01:45:10.90 ID:zgyqI55G.net] >>100 longjump()か例外をthrowするかして大域脱出すると良い ID:I8Y70xN6が。
121 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 02:00:29.05 ID:gidaw1Ah.net] コンストラクタ内でtry catch 再throwでいいんだろ? 何も難しいことなんてないじゃない。
122 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 03:05:27.95 ID:3jiwec3B.net] >>113 なるほどな ちなみにコンストラクターから例外が漏れた場合でもデストラクターは走る事がある struct A { A() {} A(int) : A() {throw 0;} ~A() {} }; int main() { A a{0}; }
123 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 06:38:25.30 ID:oAun2w+9.net] >>121 つ初期化子
124 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 07:11:47.54 ID:3jiwec3B.net] >>123 初期化しがどうかしたか? カタコトではただのアスペだぞ
125 名前:デフォルトの名無しさん [2016/01/27(水) 07:34:44.55 ID:T1kNk2gL.net] >>108 それはそのクラスが内部で処理することであってユーザーは何を解放するんだよ
126 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 08:01:41.14 ID:7tk5IOS7.net] ↑こんなところにアスペがもう一人
127 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 10:47:19.58 ID:oAun2w+9.net] >>124 コンストラクタ初期化子
128 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 12:30:07.60 ID:eULyfEEH.net] >>125 >それはそのクラスが内部で処理することであって ずっとその話なのだが
129 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 12:56:11.97 ID:zSFGO6dq.net] 初期化子もそうだけどデフォルトコンストラクトされる変数もそうだな コンストラクタ内でtry-catchできない やっぱりコンストラクトでの例外はまずいんじゃないか?
130 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 13:59:04.99 ID:oAun2w+9.net] C++17ではできるんだっけ?
131 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 17:48:02.83 ID:gidaw1Ah.net] 初期化子リストもメンバ変数も関係なくね? 初期化しきれたクラスはデストラクタが呼ばれ、初期化できなかったクラスは内部でcatchしてエラー処理して再送するだけ。 やっぱ単純だよ。 我らがMeyer先生はなんて言ってるの?
132 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 18:08:44.32 ID:7tk5IOS7.net] >>129 できないと判断した根拠は? ideone.com/WlFMej >>131 メイヤー「ワシ、ちょっとC++引退するわ」
133 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 18:10:24.29 ID:7tk5IOS7.net] 一カ所訂正 誤 try m{}, x{} 正 try : m{}, x{}
134 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 18:15:50.95 ID:7tk5IOS7.net] >>127 荒らしは去れ
135 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 18:45:02.79 ID:oAun2w+9.net] >>131 コンストラクタ初期化子に書くメンバーが初期化はコンストラクタのスコープ内部じゃない。 自作クラスだったら君の言うように内部catchすればいいけど他作クラスで例外をthrowするタイプだtry-catchで囲めない。
136 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 18:49:38.11 ID:oAun2w+9.net] >>134 まさか14以降を前提にしてるなんて言うまい?
137 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 19:31:29.47 ID:3jiwec3B.net] >>136 お前はコンストラクター初期化子や例外という言語機能がC++14以降だとでも言いたそうだな どれだけ勉強不足なんだ
138 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 19:39:57.53 ID:6XO7CsMP.net] お前らに一度確認していい? 初期化リストつったらコンストラクタのパラメータのカッコの横の クラス名(引数) : この部分 {} を言うんだよな? 駆け出しの頃にC++プライマーとかいう分厚い本で学んだときは たしかこうだったはずなんだが std::initializer_listの出現で落ち着かない気持ちになってきてる
139 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 19:53:14.68 ID:3jiwec3B.net] >初期化リストつったら (中略) >を言うんだよな? いやまずそこから違う
140 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:04:51.00 ID:1b0Lj9r3.net] クラス名(引数) : この部分は初期化子 {}
141 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:41:04.94 ID:aFoLhF8M.net] >>140 とんくす! ↓少し学んだ ISO/IEC 14882:1998 12.6.2 Initializing bases and members ctor-initializer: : mem-initializer-list mem-initializer-list: mem-initializer mem-initializer , mem-initializer-list mem-initializer: mem-initializer-id ( expression-listopt ) mem-initializer-id: ::opt nested-name-specifieropt class-name identifier
142 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:44:21.08 ID:gqKHFo+S.net] >>129 だからtry-catchなんかしない。>>94 ,108のとおりRAIIで解決する。 なんというか10年前にタイムスリップした感がある。↓読んでくれ。 https://www.google.co.jp/search?q=C%2B%2B+%E3%82%B3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF+%E4%BE%8B%E5%A4%96
143 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:00:23.97 ID:zSFGO6dq.net] >>132 あなたのおっしゃる通りです。いい加減なこと言ってごめんなさい魔が差しましたw やはり大事なのはRAIIの徹底ですね
144 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:08:05.10 ID:oAun2w+9.net] >>137 えっ? 初期化子までtry説に含めるのはC++11ではできないって言いたいだけなんだけど?
145 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:09:24.27 ID:oAun2w+9.net] ×try説 ○try節
146 名前:デフォルトの名無しさん [2016/01/27(水) 21:10:04.69 ID:0xRCKJUw.net] RAIIって初期化がキモみたいなネーミングだけどデストラクタの解放の方が大事じゃね
147 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:13:01.64 ID:1b0Lj9r3.net] >>141 ああ、構文規則の非終端記号名のmem-initializer-listと混同していたのか。
148 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:16:28.24 ID:3jiwec3B.net] >>144 ISO/IEC 14882:1998 15p1 8行目 ISO/IEC 14882:2003 15p1 8行目 ISO/IEC 14882:2011 15p1 8行目 ISO/IEC 14882:2014 15p1 8行目 これのどこを読んだらいったいそんな嘘が出てくるのか
149 名前:デフォルトの名無しさん [2016/01/27(水) 21:19:58.24 ID:hY0OCllE.net] だからHaskell使えと言っとるだろがボケ。
150 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:23:34.50 ID:zSFGO6dq.net] >>144 俺はあなたに釣られちゃったけどこれが真実です ideone.com/rVg5CP
151 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:26:16.20 ID:Qr5LJlmv.net] このスレって常連の2、3人がID変えながら互いを罵ってんだよな?
152 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:27:35.65 ID:3jiwec3B.net] >>150 C++14の結果のようだが コミュ障は去れ
153 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:28:27.16 ID:oAun2w+9.net] >>148 えっえっ?!?! 今の今まで「14になったら使える機能か楽しみだ」と思ってた...
154 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:30:40.94 ID:hs0c0BKx.net] > C++14の結果のようだが そこは突っ込むのが正解なのかw なんか深遠な理由があるのか 高度な釣りなのかわかりかねたわ(>>144 に対してC++14の結果貼り付け)
155 名前:デフォルトの名無しさん [2016/01/27(水) 21:33:45.85 ID:0q1DRp6s.net] 初期化子って何だ? もしかしてメンバイニシャライザのこと?
156 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:36:46.74 ID:0q1DRp6s.net] >>153 Exceptional C++に出てくるぐらいにはメジャーだったはずだぞ
157 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:40:42.54 ID:3jiwec3B.net] >>155 それはですね 狡猾な>>140 が初期化子リストとメンバー初期化子とコンストラクター初期化子を混同した>>138 を惑わすために出した用語なんです気にしないで ちなみに規格ではnew A(100)とかの『(100)』の部分を指します
158 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:40:46.23 ID:5WlKM79a.net] >>155 > メンバイニシャライザ それちなみにどこで習ったの? どこの流儀?
159 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:42:32.38 ID:zSFGO6dq.net] >>152 はあそんなところに突っ込まれるとはw >>153 あなたはC++14でもだめでC++17になったら出来るかもって思ってたでしょw
160 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:43:28.66 ID:oAun2w+9.net] 申し訳ない。釣りではなく本当にfunction-try-blockはこれから来る規格だと思っていた。 >>156 持ってるけどそんな記述あったかな?
161 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:43:53.84 ID:3jiwec3B.net] >>158 >>141 を100回読み直してこい
162 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:45:04.77 ID:0q1DRp6s.net] >>158 流儀? メンバ変数の初期化を行うのはmember initializerだぞ
163 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:46:53.21 ID:gqKHFo+S.net] >>150 > B() try : _id(GetId()), _a(_id) > { > cout << "B:B" << _id << endl; > } > catch(int ex) > { > cout << "B:B" << _id << " exception " << ex << endl; このcatch内でのメンバ変数 _id の参照は未定義動作になる。 15.3 [except.handle] p10 > Referring to any non-static member or base class of an object in the > handler for a function-try-block of a constructor or destructor for that > object results in undefined behavior.
164 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:47:25.50 ID:0q1DRp6s.net] >>160 お前絶対読んでないだろw
165 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:48:01.49 ID:VHRBi97o.net] >>162 ごめんごめん、純粋に何でその名前を学んだか知りたかっただけ 上でも書いたけど俺はC++プライマーって本を読んで学んだんだけど たしかそれは 初期化リスト って書いてあったはずなんだ(多分) だからみんなソレをどこで学んで何と呼んでるのか気になっただけ
166 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:49:15.00 ID:oAun2w+9.net] 多分、なんか大昔の記事を読んで最新のものと勘違いしたまま来てしまったのだ... 鬱だ
167 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:51:52.82 ID:zSFGO6dq.net] >>163 ごめん その点は危ういと思ったけどGCCだと取り敢えず意図通りになってたから 話の本筋的にはどうでもいいと思っちゃった
168 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:52:17.67 ID:0q1DRp6s.net] すまん見直したらMoreの方だったw
169 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:52:25.06 ID:3jiwec3B.net] >>163 そういやそんな決まりがあったな すっかり忘れてた
170 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:54:30.71 ID:oAun2w+9.net] >>168 安心した。ありがとう。 俺が持ってるのは2000年11月15日発行とある。 みなさん、すいませんでした。
171 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:54:40.52 ID:88/bqypu.net] みんな企画とか読んでるのか偉いですね 1ページも読んだことないわ
172 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:01:47.89 ID:0q1DRp6s.net] >>170 Moreも2001年なんだから安心するなよw その頃からメジャーどころは載ってたはずだ
173 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:10:37.63 ID:0q1DRp6s.net] >>165 あまり意識したことはないので 恐らくコンパイラのメッセージだな 規格も読んだが後付けだと思う
174 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:13:35.94 ID:oAun2w+9.net] 鬱だ
175 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:15:41.80 ID:jBJgujTM.net] >>173 > 恐らくコンパイラのメッセージだな なるほどなるほど! こういうレスをついにもらえて俺喜んでる
176 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:27:11.15 ID:vltUk2i7.net] ここは罵倒したりされたりを楽しむ変態スレ。 記憶でレス→お前バカか→バカはお前→証拠だオラ→悪ぃ悪ぃw これが挨拶みたいなもん。 一度した発言は曲げてはならないという。
177 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:35:48.89 ID:zgyqI55G.net] RAIIは論理的には正しいかもしれないが 記述量の割に得られる対価が例外に対する備えだけ、 というのが気に入らない RAIIなプログラムのメモリ消費量はなかなか安定に達しないから(∵確保したり開放したりで断片化が進んだり治まったり、 意図とはうらはらに、実は第三者に対してメモリリークが無いことの証拠提示がヒジョーに厄介なプログラムになってしまったりする
178 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:45:20.30 ID:gqKHFo+S.net] >>177 隙だらけすぎるだろ。 > 記述量の割に得られる対価が例外に対する備えだけ、 基本的なところは標準ライブラリでカバーされてるんだけど、記述量ってどんなコード想定してんの? それに、例外以外にreturnやbreakにも利くよ。 > RAIIなプログラムのメモリ消費量はなかなか安定に達しないから(∵確保したり開放したりで断片化が進ん 確保解放のパターンがRAIIで規定されるわけないし、使い方でどうにでもなるでしょ。 > 意図とはうらはらに、実は第三者に対してメモリリークが無いことの証拠提示がヒジョーに厄介なプログラムに RAII使わない、生でdeleteやらなんやら書いてるコードよりはマシでしょ。悪化する例があるなら見たい。
179 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:49:16.44 ID:zSFGO6dq.net] >>177 ?それはおかしな見解だな RAIIを徹底するほうが記述量も少なくなる(delete書かなくて済むんだから)し、 メモリリークが無いことも遥かに容易に証明できると思うが? それで納得しない第三者なんて頭が腐ってるんだから相手にするだけ無駄 断片化については直接new、deleteするのと変わらないし
180 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:55:49.88 ID:zgyqI55G.net] >>178 いちいちstd::shared_ptr<T>とか打ちたくないし、pSomeSmartPtr.get()ですらちょっと嫌 メモリ直接ならまだ標準ライブラリでカバーされるが、OSがハンドルを返す場合はwrapperを書かねばならない そしてコンストラクタが例外をスローするのに処置しようとしたら、 漏れの無いtry { } catch { }を書くか、メンバ変数を全部wrapperかスマポにせねばならない これは苦行以外の何者でもない そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする returnやbreakについては、例外と違って伝統的な書き方で対処可能 例外はスマポとか、try { } catch { } みたいな仕掛けが要る
181 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:56:07.86 ID:3jiwec3B.net] 記述量は局所的な見た目の煩雑さのことを言ってるのだろうに トータルの記述量の話にすり替えとはこれ如何に
182 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:59:19.51 ID:zgyqI55G.net] >>179 >そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする この危険性についてコードを見るだけで検証完了という信じる方がよっぽどキチ 同じコードを見る話なら、固定長の配列の方が安心できる
183 名前:デフォルトの名無しさん [2016/01/27(水) 23:00:49.72 ID:0xRCKJUw.net] あらゆる箇所にいちいちdelete Tとか打ちたくないわ
184 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:04:15.53 ID:zgyqI55G.net] >>183 もちろんナマポも極力使わない やっても関数内で確保したやつを関数を抜けるとき全部開放する使い方のみとしたい(この用途にはstd::unique_ptr<T>を使ってやっても良い この構造に統一するなら、メモリの断片化は生じない(まあだれか一人がしくじれば…というのは同じだが
185 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:07:10.32 ID:zSFGO6dq.net] なんだ固定長配列至上主義者か せいぜい頑張って下さい
186 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:08:36.16 ID:3jiwec3B.net] >この危険性についてコードを見るだけで検証完了という信じる方がよっぽどキチ 文脈を考慮して読み解かなくても局所的なコード確認の積み重ねのみで全体に漏れがないことを保証できるのがRAIIだと思っていたのだが…
187 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:13:29.29 ID:zgyqI55G.net] 加えてRAIIにはマルチコア時代にふさわしくない疑いがある RAIIで確保したり開放したるするメモリがスレッド固有という保証が無い限り、 確保や開放の度に排他制御が行われる スタック上にとられた配列がペナルティーゼロであることを鑑みれば、 InterlockedIncrement()ですら塵も積もれば巨大なコスト足りえる
188 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:18:25.90 ID:zSFGO6dq.net] そんなにヘビーなループで確保/解放を繰り返さなきゃいけない場面では俺だってダイナミックアロケーションを避けるけどね
189 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:20:30.30 ID:eULyfEEH.net] >>187 言っていることがよくわからないね shared_ptrのコストが気になるならnewせずに スタック上に確保するなりなんなりすればよいだけだろうに そっちの方が正統派のRAIIだというのに何を言っているのだろうか まったくお門違い むしろスタック上にオブジェクトを確保できる言語の方が珍しくて C++ではそれができるだけでも有り難いというのに
190 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:20:47.91 ID:I7Q8DIXY.net] 普段よりも応用を利かせたコードの書き方の検討をして、まだ知識があいまいなところ をはっきりさせようと、本で調べ物をしてたら、「プログラミング言語 第3版」よりも、 「C++ Primer 改訂3版」のほうが、はっきりと疑問に答えてくれると感じた。応用で検討 していることが可能になるか、それとも無理かをすぐに結論を出してくれるみたいな。 もう一方の本は、ストラウストラップ流のプログラム技術の英知を読者に提供しようとは してるようだけど、仕様で細かいところを素早く確認するのはまだ物足りないかもしれな いな。
191 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:21:41.35 ID:3jiwec3B.net] >スレッド固有という保証が無い限り、 確保や開放の度に排他制御が行われる >スレッド固有という保証が無い限り、 確保や開放の度に排他制御が行われる >スレッド固有という保証が無い限り、 確保や開放の度に排他制御が行われる ひょっとしてRAII=shared_ptrとでも勘違いしたのだろうかこの馬鹿は 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
192 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:26:34.20 ID:I7Q8DIXY.net] 今は「プログラミング言語 第4版」が新しく出たようだけど、今はC++14らしいが、 この本はC++11のようで、編集が一歩遅れてるという印象は否めない。 読者はC++14準拠の第5版を望んでるかもしれないな。
193 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:27:07.17 ID:0q1DRp6s.net] >>177 >記述量の割に得られる対価が例外に対する備えだけ さすがにこれはないわなあ 今更RAII無しでlockとか絶対使いたくない
194 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:47:08.39 ID:0q1DRp6s.net] ここまで俺の自演
195 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:47:41.22 ID:tYkYQITg.net] 前にEffectiveC++も新版が出たけど、もう絶対的な名著ってわけでもないような
196 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:52:26.77 ID:gqKHFo+S.net] >>180 10年ぐらい前にはこんな爺さんがよく居たもんだが、まだ居るのか・・・。 > いちいちstd::shared_ptr<T>とか打ちたくないし、pSomeSmartPtr.get()ですらちょっと嫌 慣れる。どうしても嫌なら好きに using でもしとけばいい。 get() なんて使わんでいい。 > メモリ直接ならまだ標準ライブラリでカバーされるが、OSがハンドルを返す場合はwrapperを書かねばならない 自分で書くケースがあるのはそうだが、稀だろ。 稀じゃないなら、個別に破棄処理を漏れなく書いて回るよりも一度書けば済むRAIIのほうがマシ。 > メンバ変数を全部wrapperかスマポにせねばならない > これは苦行以外の何者でもない std::shared_ptr<T>が打てない状況ならそうかもしれないな。 でもそれは個人的な事情であってRAIIの問題じゃない。 > そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする RAII関係ない。 > returnやbreakについては、例外と違って伝統的な書き方で対処可能 伝統的で且つ面倒な書き方でな。RAIIのほうが楽。
197 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:54:32.28 ID:0q1DRp6s.net] >>195 古いのは確かだがまだ十分使えると思うね 他に初心者用の良い本があれば別だけど
198 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:57:30.71 ID:0q1DRp6s.net] スマポはgoogleやmozillaのソース見ればそこらじゅうにあるな それを全部書き下せる自身があるならどうぞ
199 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 00:38:12.26 ID:5VmqP1pO.net] >>132 絶望した! >>135 いやいや、初期化子に並んでるクラスまでtryで囲む必要ないでしょ? 彼らは彼らで後始末するのだから。 自分の後始末せずに例外投げるクラスがいたら、どんな手段を使ったって後始末できないよ。 コンストラクタに限る問題じゃない。
200 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 01:13:22.83 ID:9zxCdjKY.net] >>199 後始末したあと例外を投げて来るやつをcatchするんじゃない?
201 名前:デフォルトの名無しさん [2016/01/28(木) 06:48:43.02 ID:OteWNMPZ.net] RAIIってなんて発音するの? ライー? ラッツー?
202 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 07:29:19.73 ID:y2I8o1dH.net] ラール
203 名前:デフォルトの名無しさん [2016/01/28(木) 07:37:04.01 ID:WeC7vVSZ.net] ライッ!
204 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 07:41:40.98 ID:y2I8o1dH.net] >>199 catch(...)
205 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 08:26:24.97 ID:5VmqP1pO.net] >>204 言葉足らずですまんが、自分が言及した自分自身の後始末っていうのはそのクラス内部の後始末のこと。 ハードを止めるとかメンバのメモリ開放とか。 使う側のクラスは後始末しないクラスの内部のことなんてわからないから、どんな手段を使ったってそのクラスの後始末はできない。 だから、そんなクラスがいることを前提として議論するのはおかしいってこいいたかったわけ。 そのクラスの提供者に直してもらうしかない。
206 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 08:35:58.09 ID:9zxCdjKY.net] >>205 それは正しいが、そこが論点じゃないと思う。 コンストラクタ内でエラーが起きたとき、「後始末はちゃんとやったあと例外をthrowする」クラスに 対処することを想定してる。
207 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 08:51:24.46 ID:5VmqP1pO.net] >>206 対処する必要なんてあるの? 繰り返すけど、 初期化子で構築完了したクラスはデストラクタで後始末されて、例外吐いたクラスも自身のtrycatch再throwで後始末してるんだぜ? 親側自身の雑多な初期化処理は始まってもいない。 …と書いてみたが、自分が間違ってるわ。 これで対応できない例外シチュもあり、そんな場合は個別対応すればよいだろうとは思ってたけど、例外とは呼べないほどそんな場面は多い気がしてきた。
208 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 09:29:37.28 ID:ptM8I7fQ.net] >>207 「これで対応できない例外シチュ」ってどんなの?
209 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 11:10:21.47 ID:5VmqP1pO.net] >>208 dispose()とかclose()みたいな関数を呼んでやらないと終了処理できないやつ。
210 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 11:21:23.95 ID:ptM8I7fQ.net] >>209 fclose や fstream みたいな、能動的操作処理と破棄処理が不可分になってるもののことかな。 そういうクラスをメンバを持つクラスのコンストラクタで例外が出たとした場合に行う「個別対応」って、 たとえばどんなの? デストラクタが最低限の処理をしてくれてれば何もしなくていいケースがほとんどだと思うんだけど。
211 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 13:13:16.79 ID:5VmqP1pO.net] >>210 終了処理がsendfinとかwaittimeoutとかだったりしたら、デストラクタで勝手にやられたら困らね? 非対称的に終了処理関数が用意されてることも少なくないと思う。 バグなら直せと言えるけど、設計いけてないから直せとはなかなか要求しにくい。
212 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 13:56:52.11 ID:tIrgtpz+.net] デストラクタでfcloseとか何ですのん? ファイル操作をオブジェクトの寿命で扱うのって大掴みすぎねぇ? だからコンストラクタやデストラクタでそんなもんの例外までに話が至っちまう 書き込む瞬間、読み無瞬間だけ一瞬だけファイルを開けや そこまではバッファに書きこんどけや糞ども
213 名前:デフォルトの名無しさん [2016/01/28(木) 14:51:57.24 ID:Fy8z7rZ+.net] 一つわかった RAIIと例外を背反と考えてる人がいる
214 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 19:35:11.13 ID:CFwd7jm1.net] >>212 ログライブラリを開発しているのですが 一瞬だけ開くようにすると処理時間が100 倍以上 になって困っています。 どうすればよいですか?
215 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 19:59:05.52 ID:9zxCdjKY.net] >>212 ファイル書き込みオブジェクトをファクトリ関数経由で 一時オブジェクトとしてしか生成できないようにしたことがある。 書き込んだらすぐデストラクタが走るのさ。
216 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 19:59:21.20 ID:D7v4IB1O.net] バッファが無限にあると思ってる人に聞くだけ無駄
217 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 20:01:49.04 ID:VbpHGgsr.net] >>215 kwsk
218 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/28(木) 20:02:05.39 ID:YC3cOEYy.net] >>214 出力が遅いなら、キャッシュとして出力内容をためておけば
219 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 20:11:54.15 ID:D7v4IB1O.net] アプリが落ちて肝心な最後のログレコードが見えないのでしたチャンチャン
220 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 21:05:31.79 ID:DYq8nyhg.net] ログを安易にバッファリングする奴は間違いなく低能
221 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 23:03:17.58 ID:iP985GXo.net] 自作プログラムのログを取る必要が未だ生じたことが無い天才かも知れん
222 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 23:07:22.96 ID:YmAPLaNv.net] んなこたない 糞コテ=馬鹿 で決まり
223 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 23:11:59.87 ID:iP985GXo.net] ログメッセージを複数スレッドから単一のコンソールに出す場合はcerrよりcoutの方がメッセージの1行同士が混ざる危険性が目に見えて減る デバッグレベルならprintf()して何か条件を満たしたらfflush(stdout); throw;、が最強
224 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 23:17:33.09 ID:Fy8z7rZ+.net] >>223 >ログメッセージを複数スレッドから単一のコンソールに出す場合はcerrよりcoutの方がメッセージの1行同士が混ざる危険性が目に見えて減る 気のせいだろ マルチスレッドなら、素直に同期したほうが良いぞ
225 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 23:50:40.02 ID:ptM8I7fQ.net] >>211 その困る場合の「対処」の例が聞きたかった。 デストラクタに嫌な終了処理が埋まってて困るという場合は対処のしようも無い =結局何もしなくていいんじゃないの? それで実用上の問題があるなら直せと言えるはず。 コンストラクタで例外が飛んだってことは問題の終了処理を持つオブジェクトを使って やろうとしてた処理全体は失敗したわけで、正常処理の締めに必要な 終了処理( fstream で close() とか)の明示的呼び出しも必要ないことが多いだろうし。
226 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 19:24:04.25 ID:dpjhh/AA.net] >>52 > > A *a(int i) {return as.add(new A(i));} > add() の中の push_back() で例外飛んだらリークする。 これはpush_back()出来なかった分をケアしてやればおk? https://ideone.com/s4ibLz ・天然のstd::bad_allocは得られなかったので誤魔化した
227 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 21:58:56.14 ID:V57FZVNV.net] 生ポ好きの書きそうな糞みたいなコードだな ↓こんなんでいいだろ v.reserve(v.size() + 1); v.push_back(new Fuck);
228 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 22:53:49.61 ID:tuK26dsC.net] 技術的な話題をせず ブログラミングを種に喧嘩ばかりしてるやつって何なの チンパンジーなの?
229 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 23:21:25.56 ID:q1Jl0W+Y.net] いきなりどうした 誤爆か?
230 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 23:29:27.61 ID:HWJSMXKP.net] >>227 そんな意味不明なreserveする奴が偉そうなこと言っても
231 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 23:35:27.84 ID:ASWZHNV8.net] >>226 おじいちゃん、「おとなしくスマートポインタ使えば」おkだっていったでしょ。聞こえてる?
232 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 23:52:06.13 ID:Hpd/92hj.net] >>230 いや意味が全く無いわけではない std::vector::push_back()呼び出し時点での余分な領域確保とか、速度低下が最小化される
233 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 00:09:33.50 ID:VhIzDspW.net] >>232 230 じゃないけど、 >227 の reserve() で「速度低下が最小化される」なんてことは無いでしょ。 単発なら変わらないだろうし、ループした場合は reserve() しないほうが速いし。
234 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 00:17:51.94 ID:lYkNZO2m.net] >>232 ないない push_backで領域が足りなければreserve相当のことは自動的にされるし まあないだろうがstd::vectorの実装によってはsize()+1のreserveが速度に悪影響与えることだってあり得るんじゃないかな >>227 のもう一つ痛いところはreserveさえしておけばpush_backでの例外が無いと決めつけてるところ そんな規定はないだろ?
235 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 00:21:53.24 ID:nKxSIfYZ.net] >>234 > push_backでの例外が無いと決めつけてるところ というより、それを一切考慮してない希ガスw そいつ一人だけ問題の本質に到達できていない bad_allocが投げられるのは一緒ってことも知らないんだろうし
236 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 00:55:16.18 ID:GfziY506.net] はてどこからbad_allocが出てきたのか
237 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 03:14:53.57 ID:HpDJFp9+.net] >>233 、>>234 漏れは慎重に「std::vector::push_back()呼び出し時点での」と限定して書いたで?
238 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 05:43:02.21 ID:VhIzDspW.net] >>237 ん?だから何? push_back() 関数内での領域確保・実行時間を減らして、それらを push_back() の 直前の処理に移動することに何か意味があるとでもいうの?それはどんな場合にうれしいの?
239 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 05:59:47.15 ID:GfziY506.net] A「意味がないわけではない」 「〜される」 B「そんなことは ない」 A「そんなこと ある だろ」 B「だから何?〜だと何かいいことあるのか?」 >>232 の2つの文のどちらについて話をしているのかの認識がずれていることに気付かない低能どもの会話は滑稽だな
240 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 06:17:44.28 ID:GfziY506.net] やっぱり馬鹿にC++は無理だな メモリ確保のnew/deleteは禁止にしてスマポとコンテナーだけ使っとけ ついでに馬鹿はshared_ptrも使用禁止にしといた方が安全
241 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 11:02:01.65 ID:u8r8Wxi4.net] > v.reserve(v.size() + 1); > v.push_back(new Fuck); やっぱり馬鹿にC++は無理だなw push_backの直前で+1サイズのreserveとかw www.cplusplus.com/reference/vector/vector/reserve/ ここのExampleみてお勉強しなおしたら? 例外投げるのも書いてくれるから学んどけよ
242 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 11:46:11.52 ID:GfziY506.net] 初回がresize前のcapacityと比較して何が言いたいのかよくわからん例だな push_backはcapacityに余裕が有るときに再アロケーションしないことは保証されているが 例外を出さない保証は23.3.6.5から読みとれないな やはり馬鹿にはスマポを強制したほうがいい
243 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 13:13:55.69 ID:VK1fBsAo.net] >>238 reserve()とpush_back()のどちらで例外が発生するかという文脈において、 >>227 のreserve()がpush_back()の直前行であるという解釈は一体… まあv.reserve(v.size() + n);ならともかく、v.reserve(v.size() + 1);だったから気持ちはわからんでもない
244 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 14:18:45.97 ID:GfziY506.net] どうみても>>227 はpush_back(というかnew)の直前にしか見えないのに 何を言ってるんだお前は
245 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 15:00:28.25 ID:9j1RlcoP.net] 挿入前に拡張しておけという有難い教えだな。
246 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 16:17:33.41 ID:GfziY506.net] >>245 挿入前に拡張すると(要素のコンストラクター以外では)例外が出ないという保証はある?
247 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 16:22:43.98 ID:AurOqJPw.net] >>245 はC++とは違う話題かと。 Cとなら関係あるかも知れないが、プログラミング言語でないC。 もちろん俺の読み違いかもしれない。
248 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 16:27:26.60 ID:7MlWNObS.net] あと一個で例外が飛ぶようなメモリ状況で ☆一行のとき v.push_back(foo); // ここで例外 ☆二行のとき v.reserve(v.size() + 1); // ここで例外 v.push_back(foo); こうなるだけじゃないの? 新たな連続した一本のメモリが確保できないと例外なんだから
249 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 16:35:52.43 ID:lYkNZO2m.net] >>246 規格を読んだ限り保証はされてないね 現実に存在する実装ではreserve済みであれば生ポのpush_backじゃ例外発生しないだろうけどね そんなことはアテにしちゃいけない
250 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 01:01:58.63 ID:CuJD672c.net] reserveで例外かわせても、次のnewによるメモリ確保で例外になる可能性はなくならないのだから、 newを一旦別の変数で受けるしかないでしょ hoge h; h = new hoge; vec.push_back(h); が正解。
251 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 01:58:17.63 ID:fnCrDph6.net] いやいやwもういいからスマポをmake_uniqueとかmake_sharedで使っておけ バカはnewを書くな!
252 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 02:09:31.02 ID:CuJD672c.net] >>251 あんたバカバカ言ってるけどnewを使うかmake_sharedを使うかはこの問題の本質じゃないから。 馬鹿じゃないならわかるよね?
253 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 02:22:38.94 ID:dRJvSEmL.net] どうなんだろうね vec.push_back( new t() ) の場合、newで例外が発生したらpush_backは実行しないんだから関係ないと思うんだが push_back呼ぶ前の、スタックに引数を積む段階で例外が発生するわけだから push_backは呼ばれもしないし、全く関係ないと思うんだが
254 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 02:25:49.77 ID:fnCrDph6.net] >>252 あなたが問題の本質を理解してると思えないが? newを変数で受けたってなにも変わりはしないよ てか、まずはhoge* hにしてから言ってくれない?
255 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 05:14:31.96 ID:yDMVnQCY.net] java厨ってnewしたままホウチミンだよね
256 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 06:43:17.15 ID:JTo/Q0C3.net] >>250 や>>253 のような C++の教科書にある間違ったコードのテンプレのような糞コードを真顔で言い出す低能を見ると やはり馬鹿にはスマポとしか言いようがない
257 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 17:11:12.73 ID:Ev74Df4F.net] そのjava厨が何を指すのか曖昧だが Javaでは普通、ネイティブリソースはRAIIで開放するぞ
258 名前:デフォルトの名無しさん [2016/02/01(月) 17:14:07.57 ID:/UrjTotH.net] ジャバってデストラクタみたいなの追加さらた?
259 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 17:59:52.82 ID:fnCrDph6.net] JavaでRAIIとかもうわけがわかんねーな異世界に飛ばされたような感覚だよ
260 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 18:03:33.95 ID:JTo/Q0C3.net] 確かにJavaのRAIIはCloseableとAutoCloseableの違いを理解してないと正しく使いこなせないからな >>259 のオツムがフットーしてしまうのも致し方ない
261 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 19:47:56.26 ID:FCPkKuCG.net] C++に移ってきたjava厨だよ newしたままdeleteしねぇ糞ソース大量生成しやがる
262 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 20:09:02.04 ID:qjT3Q9+K.net] >>261 Java厨は犬派で、C++厨は猫派だからな newと鳴いたら、deleteるからな
263 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 20:24:37.67 ID:ZBzDFClp.net] >>262 こういう喩え話って、短い文章中に多くの情報が込められてるものだが。 無粋を承知でお願いします。解説してください。
264 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 20:42:15.43 ID:aUqGS129.net] >>261 Java 厨に生ポなんて使わせるお前が狂ってる
265 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 20:46:33.11 ID:qjT3Q9+K.net] >>263 深い意味は無いよ C/C++やるときはnewしたらdeleteせよ!って鉄則でしょ ニャー(new)と鳴いたら、必ずデレてる(deleteる)からC++厨は猫派 単なるダジャレだよw
266 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 20:51:56.51 ID:JTo/Q0C3.net] >newしたらdeleteせよ!って鉄則でしょ 低能のお前にはわからないかも知れないが そんなことはない
267 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 21:00:17.78 ID:fOHJkiXU.net] 猫は飯くれと撫でろしか言わない 自分が人間より上だと思ってるのでデレることはない
268 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 21:32:50.64 ID:JTo/Q0C3.net] >>264 ジャバ厨とレッテルを貼るのではなく、たまたまソイツが低能だからということに気付くべき Javaでもリソース開放は行うし、C++スレにも>>250 ,>>252 ,>>253 のようなメモリも開放できない奴もいる
269 名前:デフォルトの名無しさん [2016/02/01(月) 21:42:26.29 ID:BsHDgmsO.net] 生ポってどんな場面で使うの?
270 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 22:07:54.53 ID:wHu9vKIt.net] >>268 低脳な Java 使いだから Java 厨ってラベル貼られてることに気づくべき
271 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 22:57:12.27 ID:47CQ9v48.net] >>269 ツリー構造で子が親へ参照を持つときに使ったことがあるな 相互参照するけど、親の寿命管理が必要が無いのでshared/weak_ptrが不要なケース ↓こんな感じ class tree_view { tree_view *parent; vector<unique_ptr<tree_view>> children; };
272 名前:デフォルトの名無しさん [2016/02/01(月) 23:10:37.79 ID:BsHDgmsO.net] >>271 deleteの出番なしか
273 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 23:55:10.43 ID:CuJD672c.net] >>268 だったら模範解答貼ってみせろよクズ
274 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 00:06:14.39 ID:ygGmQV70.net] >>273 >>231
275 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 00:14:57.63 ID:oBfAWjKR.net] >>271 子を作り管理するのは親ですか?
276 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 00:50:11.96 ID:AUeQZlYi.net] 生ポ渡しするなら生成するのは普通は親でも子でもなくファクトリだと思う
277 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 00:59:22.35 ID:AUeQZlYi.net] 生ポ渡しってただただ生ポ渡すってだけの意味な こう書いとかないと馬鹿には使えないが口癖のボットに絡まれそうだし一応書いとくわ
278 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 01:25:45.50 ID:x5amnXbs.net] >>260 へえJavaにもRAIIの概念なんてあったんだ Javaな現場になんてもう何年も関わってないんで知らんかったわ
279 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 01:37:28.22 ID:r5dd6eSW.net] 沖林正紀の悲劇を繰り返すな
280 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 03:58:43.22 ID:uTTEQY4N.net] 罵倒してるやつの態度は悪いけど 例だろうとポインタ間違えた上に 今時newしてvectorにpush_backしちゃうようなコード書いて その上逆ギレしちゃう奴は正直ダメだと思う
281 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 06:45:21.02 ID:5quLb8ti.net] 質問です。 ideone.com/QRZXDk 上の21行目の再解釈キャストで型変換してるところってVCでは意図したとおりに動いたのですが、 これって他の環境でも大丈夫ですか?
282 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 07:52:12.29 ID:Vw/b/5l0.net] 配列a[10]で&a==&a[0]となる理由がわかりません。 おしえてください。 &a[0]はaの要素の1番目の番地で&aはaの1番目の要素を 指し示すアドレスのアドレスの気がするからです。
283 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 07:59:56.34 ID:N9T32bdW.net] アドレスのアドレスなんてものは無いということに気がつけばまぁそんなもんかと理解できるかと (ポインタ変数のアドレスならある)
284 名前:デフォルトの名無しさん [2016/02/02(火) 09:42:40.95 ID:LvBWX7cX.net] 例外機能をoffにした場合 std::vector<int> v(???); でメモリの確保に失敗した場合の動作はどうなりますか
285 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:14:27.48 ID:NoB4axe7.net] "自動車"クラスを"人間"クラスが操作するとします。 "自動車"クラスが提供する個々の機能(例えばアクセルやブレーキ)は、 サブクラスが提供(例えばアクセルはエンジンクラスに定義)して、 "自動車"クラスは特に関与しないものとします。 この前提において"自動車"クラスを定義する場合、"自動車"クラスは サブクラスを継承するかたちで定義したほうが良いでしょうか? それとも、自動車クラスが個々のサブクラスのインスタンスを保持して メソッドをラップしたほうが良いでしょうか?
286 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:22:39.18 ID:ygGmQV70.net] >>281 継承を確信できるところでのダウンキャストは static_cast の出番。 5.2.9 [expr.static.cast] p2 reinterpret_cast で作った結果に移植性があるのはごく一部だけ。 5.2.10 [expr.reinterpret.cast]
287 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:22:52.91 ID:MIlHcyxr.net] 人とエンジンは特性上車とは異質であるが為継承ではなくラップした方が融通性能高いことは明白である
288 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:23:10.07 ID:ygGmQV70.net] >>282 いいかげんな教材には a が「配列先頭要素へのポインタである」などと 書いてあるかもしれないが、実際には「配列」であり一部の例外を除いて 「配列先頭要素へのポインタに暗黙変換される」ということになっている。 & 演算子は例外のひとつで、 &a で配列そのものへのポインタが得られる。 4 [conv] p8
289 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:23:22.64 ID:ygGmQV70.net] >>284 非標準の動作なので、まずコンパイラのマニュアルを調べる。 書いてなければ、どうせ移植性は期待できないので実験でもいいかもしれない。
290 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:24:45.55 ID:ygGmQV70.net] >>285 https://www.google.co.jp/search?q=is-a+has-a
291 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:30:10.28 ID:NTv/QStd.net] >>285 当然後者。 現実の関係を模倣するのが普通。 一点、ラップってのをどういう意図で使っているのかが気になる。 個々の部品を組み合わせて、車としての機能を提供すると考えてね。 部品の機能をスルーするだけのラッパーはあまり出ないはず。
292 名前:285 mailto:sage [2016/02/02(火) 11:53:42.81 ID:NoB4axe7.net] 皆さん、回答ありがとうございました。 継承と包含の関係を理解してませんでした。 ちなみに”サブクラス”という言葉の使い方も誤解してたみたいです(^^; >>291 >ラップってのをどういう意図で使っている 部品の機能をスルーするだけのラッパーという意味でした (^^; その辺も含めてもう少し設計を見直したいと思います。
293 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 13:09:09.90 ID:ZM61xwKS.net] 未だbetter Cより進んだ使い方ができない
294 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 13:26:24.18 ID:7f7wf/mW.net] >>284 俺の環境だと、色々省略すれば std::vector : protected std::_Vector_base { vector(size_type __n, const allocator_type& __a = allocator_type()) : _Vector_base(__n, __a) { _M_default_initialize(__n); } }; std::_Vector_base { _Vector_base(size_t __n, const allocator_type& __a) { _M_create_storage(__n); } }; となって、最終的に__gnu_cxx::__alloc_traits<_Alloc>::rebind<_Tp>::other::allocate() defined at ext/new_allocator.hが呼び出されて pointer allocate(size_type __n, const void* = 0) { if (__n > this->max_size()) std::__throw_bad_alloc(); return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); } が走る。つまり、俺の環境だと、std::vector<int> v(100);すると::operator new(std::size_t)が呼び出されて、例外機構を殺して確保も失敗するなら投げられたbad_alloc例外を処理できずにコケる。 これを書き換えてoperator new(__n * sizeof(_Tp), std::nothrow);とするならallocateはメモリを確保できない時にnullptrを返す。すると次に_M_default_initializeが走って、 最終的にplacement newが走って、thisをデレファレンスした瞬間にセグメンテーションフォールトでコケる。 要するに、例外が発生して安全に停止する前提でライブラリが組まれてるから、例外機能をオフにしたら不安定な動作になる。 例外機能をオフにしようが何しようがthrow自体は出来るので、きちんとcatchしましょうって話に落ち着くかと。
295 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 14:09:39.60 ID:oBfAWjKR.net] >>288 知らなかった・・・
296 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 15:14:11.42 ID:Ycdr5jOx.net] まあせいぜい「配列への参照」くらいまでだな。
297 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 15:35:32.57 ID:TPiwOAfk.net] aが配列だったらint*の引数部分に&aの形でもいいのか なんか気持ち悪いな
298 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 15:59:38.85 ID:5quLb8ti.net] >>286 回答ありがとうございます。 protectedで継承しているのでstatic_castは無効なのです。 これは移植性ないとみるべきなんでしょうか。 強引にCスタイルキャストでごまかすべきか・・・。Orz
299 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 17:00:35.47 ID:ucpE/ELv.net] >>282 細かいことを言うようだけど &a == &a[0] ではないよ。 下の例で、3つのprintf()は同じ値(アドレス)を表示する。 けれども if の部分で有効なのは最初の行だけ。 下の2つのif行の注釈を外すとコンパイルエラーになるはず。 a と &a[0] は等しい。 &a と &a[0] は(値は同じだが)型が違う。型が違うので比較はできない。 #include <cstdio> int main() { int a[] = {1, 2, 3, 4}; printf("a == %p\n", a); printf("&a[0] == %p\n", &a[0]); printf("&a == %p\n", &a); if (a == &a[0]) printf("Equal\n"); // if (&a == &a[0]) printf("Equal\n"); // if (a == &a) printf("Equal\n"); return 0; } >>282 の本題、&a と &a[0] の値が同じになる理由は、 配列の中身がメモリにどう格納されるか、を図で表すと分かりやすいんだが 俺の表現力では無理なんでどなたか頼む。
300 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 17:01:52.82 ID:7f7wf/mW.net] >>298 castして欲しくないからprotectedにしてるんじゃないの?
301 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 17:23:10.99 ID:5quLb8ti.net] >>300 いやー、ハンドルみたいな使い方を規定していて、 自分は外部関数で値を変更したいんですけど、ユーザーには触ってほしくない。 という、わがままな欲求です。 そのうちUnified Call Syntaxが入ったら、いろいろやろうと思ってるところです。
302 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 17:25:43.26 ID:MIlHcyxr.net] >>299 コレ昔VC6でやったら結果が違った BCC5だとすべて同じ値なのに
303 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 17:29:56.27 ID:MIlHcyxr.net] vc6だと&aが結局何処差し示しているかわからんかった
304 名前:299 mailto:sage [2016/02/02(火) 17:53:41.97 ID:ucpE/ELv.net] >>302 a[] において &a が配列全体のアドレスを表すってのは ANSI C で統一された挙動だったね。調べ直しちゃったよ。 C++ でも成立するよな。自信が揺らいできた。
305 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 17:55:25.15 ID:C4M/U0aw.net] VCは規格準拠してないらしいからね しかたないね
306 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 18:30:04.71 ID:1NZHqYvt.net] >>282 たまたまお前の処理系がバイト単位でリニアアドレッシングしてるから。 int a[3]; について &a[0] は先頭要素のアドレス &a は「a[0] a[1] a[2]」という配列全体のアドレス だから一致する
307 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 18:31:29.65 ID:QW7JMPO0.net] >>282 https://ideone.com/woT6Lc &a[0]は要素へのポインタ(一個目の要素へのポインタ) &aは配列へのポインタ(一個目の配列へのポインタ)だよ >>231 :(~): :(i:i:i:i:i): :(i:i:i:i:i:i:i:): :( ゙´ω`゙): … :(:::::::::ソ:::っ: :し─J ┃:
308 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 18:35:17.86 ID:KYl+p0oO.net] 一個目の配列って、日本語変
309 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 19:17:24.83 ID:WSo7+ODL.net] &&&&****aとか&&&&aとかにしても通ってしまう気がした
310 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:12:44.79 ID:po3vtalA.net] arrayと&array[0]が同じなら なんでsizeof(array)で正しくサイズが出てくるのか分からん
311 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:35:13.03 ID:WkrnCzmR.net] >>310 > arrayと&array[0]が同じなら ポインタに変換したら一緒になると言うだけ > なんでsizeof(array)で正しくサイズが出てくるのか分からん array 自体のサイズをコンパイラは知ってるから
312 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:54:40.03 ID:MIlHcyxr.net] >>309 &と&&は別物だよ ちなみに&&は定数も代入できる
313 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:56:18.82 ID:RveVHAYz.net] >>312 馬鹿は去れ
314 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:28:49.56 ID:5quLb8ti.net] array[] -> 配列の型 array[0] ->配列の要素の型 sizeof(array)はdecltype(array)の暗黙に持ってる長さ情報にアクセスしている? array == &array[0] はアドレス値は同じだが、型自体は違うので持ってる情報は違うもの。前者はT[]。後者は(&T) 暗黙の型変換でぐちゃぐちゃになってるのはお前の頭だ! であってる?
315 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:29:30.66 ID:5quLb8ti.net] T&か。
316 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:30:29.16 ID:MIlHcyxr.net] int &&a = 5 ;
317 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:33:13.54 ID:5quLb8ti.net] >>316 int&& a=int(5);と等価だっけ?
318 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:34:17.88 ID:MIlHcyxr.net] T&&a=5 ; が a自体の参照で、 T&&a=n ; でnの参照になったりする。自動で。
319 名前:デフォルトの名無しさん [2016/02/02(火) 21:34:40.95 ID:06fZR6NS.net] const hoge h; h.~hoge(); デストラクタはconstついてないのに呼べるのは何故ですか
320 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:53:06.16 ID:RveVHAYz.net] >>302 今確認したが同じアドレスになった どうしてそう息を吸って吐くように嘘をつくのか ちなみに&aがどこを指しているかわからないのは Visual C++ 6.0じゃなくてお前のオツムが原因
321 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 22:09:17.83 ID:MIlHcyxr.net] >>320 Hotfixいれまくったりすると環境変わるからね 昔のことだからよく覚えてないけど
322 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 22:20:22.89 ID:RveVHAYz.net] まあこのメッセージを読んでもどこ指してるかわからないようでは致し方ない int *p = &a; error C2440: 'initializing' : 'int (*)[4]' から 'int *' に変換することはできません。(新しい動作 ; ヘルプを参照)
323 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 22:51:04.27 ID:MIlHcyxr.net] >>322 バカでもわかる型の違いですけど なんでキャストしないのですか?
324 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:11:50.94 ID:x5amnXbs.net] キャストで逃げようとするほうがバカ なんで&a[0]にしないのですか?
325 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:20:08.01 ID:RveVHAYz.net] 知っててキャストするなら問題ないだろう だが>>323 の様にどこを指しているかわからないと言ってるのにキャストするのはヤバい >>318 とかはよ病院に行くレベル
326 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:20:42.79 ID:x5amnXbs.net] (int*)a:7文字 static_castだと当然もっと長くなる &a[0]:5文字
327 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:27:30.24 ID:MIlHcyxr.net] 何処もヤバくないと思うんだがね 病院逝くのは貴様の方だろ
328 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:31:01.70 ID:7f7wf/mW.net] &*a:3文字
329 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:40:56.45 ID:x5amnXbs.net] &a[0]ならaがstd::vector<int>になっても通用するからそう書けよこのスットコドッコイども
330 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 00:24:20.72 ID:5VKefHqD.net] c++スレ名物の殴り合いが始まりました!
331 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 07:32:59.13 ID:Gb259GwX.net] >>329 (int*)aって書ける時点でaは配列かポインタだろ なんでvectorクラスを仮定してんだよ
332 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 12:46:03.59 ID:6CbCMv4Y.net] https://ideone.com/wCpVQ1 Javaとは違いC++は基底クラスのインスタンスを派生クラスにダウンキャスト出来てしまうのですが、 これは正しい挙動なのでしょうか。 またオーバーライドした関数が呼べるのは理解できるのですが、 派生クラス独自の関数も呼べてしまうのは腑に落ちません。
333 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 12:54:30.47 ID:AVVts3m8.net] C++としては正しいが、当然危険なコードなので もしそうせざるを得ない場合は、設計が間違ってると思うべき
334 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 12:59:18.19 ID:AVVts3m8.net] 正しい挙動の意味にもよるが どうしても使わざるを得ない場合はdynamic_castを使うべき
335 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 13:02:03.09 ID:EbXG9hpy.net] >>332 実行時のチェックなしでできてしまうって意味だよね? プログラマが手動でメモリを割り付けてたりする場合もあるから、下手にチェックされても困るケースがある。 チェックしてほしければvirtual関数持たせた上でdynamic_castしろ。 あと、gが呼べるのは暗黙の引数であるthisに触ってないから、thisがなんであっても問題が表出しないだけ。
336 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 13:59:40.04 ID:XI3wSbIf.net] >>332 C++言語の仕様上behavior is undefinedなので どのような結果になっても正しいからな コンパイラーの出力するコードの都合でたまたまエラー無くspecialが呼び出せてもおかしくはない
337 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 19:09:23.55 ID:V5mcV8ll.net] 私はこの分野にあまり詳しくはないのですが、そうなんですか?
338 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 19:56:03.11 ID:5VKefHqD.net] >>331 えっ?!
339 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 23:17:57.39 ID:XI3wSbIf.net] >>337 そうなんです プログラマーは全知全能でミスをしたら自己責任という思想の言語なので 都合の悪いことはundefined behaviorの扱いにするのがC/C++のお家芸
340 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 22:34:42.23 ID:vx+zStXc.net] 質問ですが、 xがbool型変数だとして、下記は常に成立する? ((x && (int)x == 1) || (!x && (int)x == 0)
341 名前:340 mailto:sage [2016/02/04(木) 22:39:53.98 ID:vx+zStXc.net] 補足。 >>340 の質問意図は、(int)xでtrue/falseを1/0に変換することが規格で正当化されるか否か確認したいということです。 実はxに格納されたtrue/falseを1/0に変換するには、!!xとでもすべき?
342 名前:デフォルトの名無しさん [2016/02/04(木) 22:49:25.93 ID:+7Di5n3C.net] bool型変数のtrueとfalseを反転するコードを教えてください
343 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 22:52:25.87 ID:DD/iUN5m.net] >>342 !
344 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 23:50:20.63 ID:cr9CcGXP.net] >>341 今からwww.open-std.orgでN4567をダウンロードして4.7節の第四段落を読むんだ!
345 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 14:01:35.52 ID:HgDpm1WA.net] このスレはGCCとClangどっち派が多いですか?
346 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 15:27:33.07 ID:BBqIJr5G.net] g++とclang++な
347 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/05(金) 16:01:17.74 ID:+wdY+cb5.net] Win版のClangはバグがあるからまだ普及してないあるよ。
348 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 16:07:19.66 ID:JYiBRtGE.net] __try __finally が使えるやつじゃないと使う気になれない
349 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 18:54:43.78 ID:HgDpm1WA.net] clangはまだっすか GCCオワコンとか豪語してたのはなんだったんだ
350 名前:デフォルトの名無しさん [2016/02/05(金) 19:30:15.73 ID:VxMqMA9Y.net] iccでしょ
351 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 20:08:04.06 ID:JYiBRtGE.net] いい加減、finally 標準化してほしい
352 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 20:16:50.99 ID:HgDpm1WA.net] そういやboost使ってるとGCCは警告出すのにclangは出さなかったりするなぁ >>350 昔はアカデミック目的ならタダだったらしいね
353 名前:デフォルトの名無しさん [2016/02/05(金) 20:39:31.37 ID:j4SE5TPh.net] STLで、 array と vector とで、より基本的なのはどっち?
354 名前:デフォルトの名無しさん [2016/02/05(金) 20:42:32.39 ID:x6bpCF93.net] vectorパイセン
355 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 20:47:18.11 ID:8VG1Xbz/.net] 今は学振の研究費で買う時代
356 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 20:54:16.61 ID:0mavO284.net] >>353 STLにはarrayなんてありません
357 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 20:55:35.17 ID:Da4oU4sD.net] arrayはconstexpr対応になるんだっけ?
358 名前:デフォルトの名無しさん [2016/02/05(金) 23:59:20.96 ID:h93Uutag.net] uBlasってどんな人が使うの?
359 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 00:13:51.81 ID:UqtC6Emj.net] 行列とかだっけ?解析関係?
360 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 00:15:16.29 ID:cWTD7JVS.net] 早くはないんでしょ あくまで実装例って位置付けで
361 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 00:23:29.24 ID:EywJMRGG.net] じゃあblasに興味ある奴が使うんだろ
362 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 11:43:48.82 ID:M1Vkc4iO.net] >>357 お前まだconstexpr対応してないの? はよ専用ブラウザ入れろ
363 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 17:55:48.52 ID:DtUiRvEm.net] C++は見限ったな。 おれはCに移住したが楽園だわ。
364 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:07:24.47 ID:gyUZgEHU.net] >>363 さようなら、楽園の住人
365 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:31:40.60 ID:OQzrG2km.net] Cにメンバ関数や簡易的なオブジェクト指向が取り入れられるようになったら C++の存在意義ってなくなるよな。 ここ数年のCはC++の成果を貪欲に取り入れる傾向もあるし、 そのうちC++からCへの回帰が始まるんじゃないかって気がしてる。
366 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:36:09.47 ID:DtUiRvEm.net] いや、もうなってる。 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。 構造体の中に構造体を持たせてユニオンすれば継承だしな。 パブリックとかはパイソンみたいにすればいいし。
367 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:47:01.63 ID:s3egBiWX.net] そしてまたc++が生まれ…
368 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:52:28.27 ID:ewLa/pEP.net] C++ が理解できなかったんだな 爺にはよくあることだから悲観しなくていい 楽園で楽しんでくれ
369 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:01:46.31 ID:0Vjd8v8v.net] >>366 > 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。 それ継承の仕組みだし > 構造体の中に構造体を持たせてユニオンすれば継承だしな。 意味不明だし まあCの楽園で成仏しとけ
370 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:06:52.10 ID:1ZsFckKc.net] わざわざここに書き込みに来た理由を考えるに、たぶん触れないでおいたほうがいいと思う。
371 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:09:17.71 ID:/1/YZwYl.net] >>354 ありがとう vector先輩についていくわ
372 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:23:16.72 ID:lxi6Zpfn.net] 簡単なドライバの本でも読めばいいのに
373 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:05:33.75 ID:ijtrMwoE.net] >>369 >> 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。 >それ継承の仕組みだし 仮想関数の素朴な実装だろ; (正しくはvtblを作るべきだが、 >> 構造体の中に構造体を持たせてユニオンすれば継承だしな。 >意味不明だし 「ユニオン」の誤用があるようだが 入れ子の構造体は継承の素朴な実装に他ならないだろ;
374 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:10:44.00 ID:ijtrMwoE.net] つまり、 struct Foo { int m_a, m_b; }; struct Bar { struct Foo m_base; int m_x, m_y; }; としとけば、 void print_foo(struct Foo* p) { printf("a=%d, b=%d\n", p->m_a, p->m_b); } に対して、 struct Bar b; print_foo((struct Foo*)&b); とできる、 これが(virtualでない)継承の真実の姿、
375 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:12:28.12 ID:bscwrwNU.net] C至高信者はどっかほかのところで好きなだけC++をディスってろ まずはスレ違いだってことを認識できるまでには成長することだな
376 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:16:37.46 ID:zK6xYjd8.net] Cの思想に反する「デストラクター」が使えない以上 あまり意味があるとは思えない
377 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:22:56.44 ID:kD783RuO.net] >>365 XVIewのAPIって知っている?
378 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:32:27.60 ID:K1T12T5X.net] C至高信者は一生構造体をmemsetし続けるに100ペソ
379 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:36:18.00 ID:DtUiRvEm.net] >>374 structをm$独自の拡張を使っていることはいいとして基底クラスの中身をユニオンしておくんだよ。そうすると.で中身をとりだせるようになる。 {}で0になることもしらないのか?
380 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:49:45.09 ID:ijtrMwoE.net] >>379 >>374 のstructのどこにMS拡張が…? >>379 >>{}で0になることもしらないのか? C言語でおk
381 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 20:57:45.31 ID:ijtrMwoE.net] >>379 あらかじめ逝っておくが、>>374 は無名構造体メンバなど使っていないCのソースコードのつもりであって、 メンバアクセス表記を厳密にC++と一致させることを目的にはしていない (struct BarのベースクラスFooのメンバへのアクセスをstruct Barのインスタンスからやる場合はb.m_a、ではなくてb.m_base.m_aと書かねばならない メンバの初期化も主たる論点ではないから配慮していない(追加コードでどうとでもできるので >>379 のユニオンの使い方はおそらくメンバアクセス表記をC++と一致させることを意図しているのだろうが unionでは多分意図通りの継承動作にならない希ガス 想像が付かなさ過ぎるからコードを示してホスイ、
382 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:13:08.69 ID:OQzrG2km.net] ideone.com/USd3cx 「3 == 3」になるっていう話をしているんじゃないのか?
383 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:27:52.21 ID:ewLa/pEP.net] 何を言い争ってるのかさっぱりわからんが、こいつらに C++ は無理なんだろうな って思う
384 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:29:53.37 ID:DtUiRvEm.net] 今回だけは特別に教えることにするよ。 あとはもう何も教えない。 struct Foo { int m_a, m_b; }; struct Bar { union{ struct Foo; Foo m_base; } int m_x, m_y; };
385 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:31:27.25 ID:K1T12T5X.net] C至高信者は自らの人生をもmemsetし続けるに1兆ジンバブエドル
386 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:56:39.15 ID:kD783RuO.net] 普通 bzeroだろうな
387 名前:デフォルトの名無しさん [2016/02/06(土) 21:56:59.40 ID:64Pydz+a.net] ->でアクセスするメリットがぜんぜんわからん 楽園の住人にはカプセル化という発想はないのか
388 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:36:08.60 ID:ijtrMwoE.net] >>384 いちおう継承動作はするが、unionでなんも解決しとらん… (>>381 の「b.m_base.m_aと書かねばならない 」問題が変わらずそのまんま struct Barがunion Barなら「b.m_base.m_aと書かねばならない 」方は解決し得るが それではBarによるFooの継承にならぬ(∵Barの基底クラスFooと、Bar固有のメンバが同じ領域を共有する
389 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:05:23.36 ID:sv0+Wms0.net] 涙目敗走宣言してるんだからほっといてあげなよ
390 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:23:57.22 ID:zK6xYjd8.net] どうしてこの馬鹿はコンパイルが通るかすら確認してこないのか
391 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:39:17.52 ID:K1T12T5X.net] > Foo m_base ; この時点でC++ Cオワタw
392 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:43:08.90 ID:K1T12T5X.net] > struct Foo; Forward でしょコレ? なにもunionしていない件w
393 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:43:47.41 ID:g5TnjOqx.net] >>384 struct Bar { union{ struct Foo; Foo m_base; } int m_x, m_y; }; 謎の構造体。M$拡張が謎過ぎる。 intをconstみたいなtype qualifierとして使う拡張なんだろうか? struct Foo;と前方参照っぽい宣言が共用体の宣言中に出てくるのも謎。 しかもすぐ前で完全な宣言があるのに不完全な宣言してどういう意味があるんだろう。 謎過ぎる。M$の謎と命名しておこう。
394 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:48:37.39 ID:zK6xYjd8.net] 今回だけは特別に教えることにするよ。 今回だけは特別に教えることにするよ。 今回だけは特別に教えることにするよ。 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
395 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:03:47.31 ID:itHaFKCT.net] 良い老害の反面教師であった(-人-)ナムナム
396 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:18:09.92 ID:2T9Cjz04.net] >>393 type qualifierとは何なのか
397 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:20:08.19 ID:itHaFKCT.net] FooというかFool
398 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:36:30.49 ID:umEWBWiF.net] >>396 https://en.wikipedia.org/wiki/Type_qualifier 謎のM$拡張だろ。union {} の後に直接intが続いてる。 予約語なので変数名ではあり得ない(intの後にカンマもないし)から、intをtype qualifierとして拡張しているに違いない。
399 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:50:27.56 ID:2T9Cjz04.net] よくわからんがVisual C++の独自仕様とCにはtype qualifierなるものが存在すると見た 勉強になった
400 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:50:42.57 ID:O4F8gqhm.net] Cの話なんか誰も聞いてないし聞く気もない わかったらさっさと帰れ
401 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:52:59.97 ID:umEWBWiF.net] MSにはそんな拡張ないから、ぱちもんのM$(多分中国)だろ
402 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 01:24:34.33 ID:itHaFKCT.net] 学習しないまま老害になった結果(( ;゚Д゚))
403 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 07:42:43.72 ID:ywTW8z18.net] Cすら怪しいC使いって…
404 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 08:19:23.63 ID:H1plH6un.net] ideone.com/eM34eU 普通にできるのだが。 M$の拡張のスイッチはいってなくてちょっと変だが。
405 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 08:30:57.45 ID:2T9Cjz04.net] このウンコード、もはや11行目にFoo m_baseを書く意味がわからない
406 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 08:58:16.66 ID:2T9Cjz04.net] >>404 struct base {int x,y; }; struct derived {int x,y; int a,b;}; この方が良くないか? まあセミコロンが抜けたのを揚げ足とってtype qualifierがどうとか意味不明なことを連呼する低能といい勝負だな
407 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 09:20:54.21 ID:ihWrHU4l.net] いま Javaとc言語 勉強してますが c++は かなり違いますか??
408 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 09:24:14.26 ID:H1plH6un.net] JavaとC++は同じ
409 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 09:48:45.37 ID:YehISXuU.net] >>404 何をしたいコードなのかさっぱり理解できないのは俺だけか…
410 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 09:57:59.57 ID:HPtrUBPy.net] 継承の話なんだから、もともとこれがしたかったんだろ。 Foo foo = {.m_a=1, .m_b=2}; Bar bar = {.m_base = foo, .m_x=3, .m_y=4};
411 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 10:11:54.69 ID:2T9Cjz04.net] >>409 話の発端を辿れば>>366 ,379にはすぐたどり着くだろう この2つのレスを読んだ上でわからないなら病院に行くというのも良いだろう
412 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 10:44:18.18 ID:umEWBWiF.net] >>404 >今回だけは特別に教えることにするよ。 あとはもう何も教えない。 見苦しいぞ、チンカス 前言ひるがえして教えるなら、intの前にセミコロン不要なM$拡張とやらを解説しろよ。
413 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 11:17:57.53 ID:YehISXuU.net] >>410 それならまだ理解できるんだが >>404 は全く意味不明 w
414 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 11:21:51.54 ID:wnPOo6ul.net] >>404 良かったなお前、なんかもう少しで新しい伝説になれそうだよ(´・ω・`)
415 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 12:41:33.79 ID:jZhj8x29.net] C++を使うんならクラスのインスタンスがどういう風にメモリ上にマップされるのか意識した方が良いのでは… さもないと 他人様が書いた多重継承を使ったコードに遭遇して死ぬか、 多重継承の危険性を認識できないまま使って死か、 しかし抽象クラスの多重継承は安全で便利なんだ、ということを知らないまま死ぬ とかいろいろ…
416 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 12:48:25.44 ID:ywTW8z18.net] >>404 のような小学生の屁理屈みたいなコードを 平気で表に出せるその神経はすごいと思う
417 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 12:51:22.52 ID:ywTW8z18.net] >>408 ヒエッ…
418 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 13:01:53.78 ID:lDWgMel+.net] >>416 凄いというより、俺はもっと率直に怖いわw こいつに関わったら糞まみれになる!っていう危険を感じるわ
419 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 13:11:08.84 ID:ywTW8z18.net] >>418 てっきり顔真っ赤にして書いたのかと思って油断してたんだ こりゃー本物ですわ…
420 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 14:58:13.14 ID:GW5WZ8T2.net] どちらかというと痛い自演が続いている>>419 が哀れ
421 名前:デフォルトの名無しさん [2016/02/07(日) 15:21:06.58 ID:ywTW8z18.net] …えっ?
422 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 15:36:34.21 ID:K4RZyWmM.net] >>407 C++を進化させたのがJavaだよ 基本的な考えはいっしょ
423 名前:デフォルトの名無しさん [2016/02/07(日) 15:44:07.75 ID:ywTW8z18.net] メモリの管理方法からクラスローダの有無からテンプレートまで 仕組みも定石も書き方もかなり違うっしょ 駄目だよ嘘教えちゃ…
424 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 15:46:01.35 ID:K4RZyWmM.net] >>423 クラスローダとか枝葉だし テンプレートはJavaも取り入れてるし メモリ管理はそれこそ正統進化でしょ
425 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:03:53.98 ID:ywTW8z18.net] >>424 本気で言うてんの? クラスローダはリフレクションの動作の要 ジェネリクスとテンプレートは別物だし C++のメモリ管理なんて根本的な考え方が違う
426 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:13:48.60 ID:K4RZyWmM.net] 考え方が一緒だなんて言ってないよ 進化すれば一緒にはならないのは当然
427 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:15:31.53 ID:YehISXuU.net] アホでも使える様にしたのを進化と言う人もいるから別に進化でもいいけど、細いことやろうとすると面倒過ぎ ⇒ Java 必須の要件でないなら C++ か C# 辺りを使う
428 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:18:49.64 ID:ywTW8z18.net] >>426 あんさん「基本的な考えはいっしょ」って思いっきり言うとりますがな…
429 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:20:12.15 ID:1Xy48Qqn.net] テンプレートとJavaとか.Netのジェネリクスが同じという人は、だいたいテンプレートの理解をしてない人が多いね テンプレートでジェネリクスの機能を実現できるとは言えるけど、全くもって同じではない
430 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:20:56.37 ID:TXHOUVTA.net] JavaがC++の進化?笑わせるなよw C++のインタプリタ作ろうとして出来損ないになったのがJavaだろ
431 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:21:03.56 ID:9JmoCpHp.net] テンプレートとジェネリクスをいっしょにしちゃう時点で >>424 はJavaもC++も両方ニワカなんだなってわかる
432 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 16:31:34.60 ID:CZPnBtq1.net] C++は文字扱いやすいから好き
433 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:35:59.24 ID:2T9Cjz04.net] テンプレートとジェネリクスは別と強く主張している人は 目的と手段が入れ替わっているのではないかと危惧してしまう
434 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:41:03.74 ID:vcfxOeKG.net] 少なくともc++のtemplate側から見たjavaのジェネリクスは出来損ないの玩具未満
435 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:44:02.11 ID:H1plH6un.net] マクロがあればジェネリックスもテンプレートもいらないだろ。 あとvoid*もあれば何もいらない最高。
436 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:49:08.88 ID:fu54F6yL.net] マクロも void * も型を無視するからね‥せっかくの型情報を無駄にしたくないよね
437 名前:デフォルトの名無しさん [2016/02/07(日) 17:51:01.99 ID:jvYVRZ1r.net] マクロアセンブラ最高
438 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:53:35.11 ID:1Xy48Qqn.net] >>435 型安全という言葉くらい勉強してくれ
439 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:58:01.45 ID:itHaFKCT.net] >>408 おいやめろ、newしたままホウチミンが沸くだろ
440 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:33:27.60 ID:ywTW8z18.net] >>433 型消去しまくりで、ユルユルのジェネリクスと インスタンス化しまくりで、カチカチのテンプレートが同じだと思ってるのは C++をまともに使ったことが無いのにイメージで語る人間ぐらいだろ
441 名前:デフォルトの名無しさん [2016/02/07(日) 20:38:31.87 ID:oOsMibJK.net] newしたままホーチミンってunique_ptr使わんの?
442 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:40:02.81 ID:DCLFR8bK.net] java 使いだけど謝っとく。ジェネリクスとテンプレートは全く違う 実際こんな意識のやつしかいない
443 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:40:32.15 ID:ywTW8z18.net] >>433 よく読んだらダークサイドに落ちるテンプレート使いを憂う紳士だったか… すまない早とちりだった
444 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:42:36.82 ID:9JmoCpHp.net] 学生のころハゲの本読んだらやたらとテンプレートを自慢してて 当時は何言ってんだこのオッサンと思ってたが 今となってはC++の本質はむしろテンプレートにこそあるとすら思うわ
445 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:46:00.38 ID:jZhj8x29.net] (ここまでテンプレ)
446 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:16:11.87 ID:2T9Cjz04.net] 『newしたままホウチミン』 そこはかとなく昭和臭の漂う言語センスだな
447 名前:デフォルトの名無しさん [2016/02/07(日) 23:45:46.38 ID:BRQ6zdFU.net] >>446 「昭和的センスの光る秀逸な言語センス」と書き込むのが優秀な工作員。
448 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 08:10:58.75 ID:FLpG0nuf.net] v.reserve(v.size() + 1); ってModern C++ Designでも使われてるな。4.5章。 アレクサンドレスクさん大丈夫か?
449 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 08:26:46.05 ID:1arqmFZS.net] std::vector::reserveはあらかじめ最大サイズが分かってる場合のみ使うべきで push_backの前にその都度やってはいけない std::vectorの実装によっては見過ごせない速度低下を招くおそれがある
450 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 08:57:30.60 ID:M0j0fnEJ.net] >>448 この人のことかい? https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu
451 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 14:33:59.40 ID:sy4WOp1q.net] だからってdequeがそんなに速いわけでもない
452 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 18:36:26.79 ID:hQVN/n6H.net] 性能は処理系依存・実測が基本だよ。 実装によっちゃ遅いから一律ダメなんて馬鹿げてる。 問題は例外安全の保証が無いのに使っちゃうようなコード。
453 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 20:59:27.12 ID:91HGMZTw.net] >>452 そうは言っても1億件のデータにリニアサーチとかするのはバカって言われてもしょうがない
454 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 21:07:15.68 ID:0e7wp70j.net] んだな。 細かい性能の差は実装依存が当然だが 線形時間か対数時間かぐらいは仕様にしてくれないと困るべ。
455 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 21:13:26.69 ID:e87P5enc.net] そこで承太郎! 処理に何秒かかろうと関係ない実装を思いついた・・・・・・
456 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 21:17:06.11 ID:1arqmFZS.net] >>452 v.push_backの前にその都度v.reserve(v.size()+1)するのは完全に馬鹿げてると思うが?
457 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 21:31:38.79 ID:jK3N5mCN.net] メモリーアローケーターを作ってるのに必要以上にメモリーを割り当てる馬鹿はいないでしょ。
458 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 21:43:10.93 ID:0e7wp70j.net] >>455 野郎 ・ なんてことを思いつくんだ・・・ こいつは・・・・・やばい・・・・・ぜ
459 名前:デフォルトの名無しさん [2016/02/08(月) 21:45:29.03 ID:UKgal17Z.net] 例外安全の保証っていうけど、 それサーチについて言うならデータ例外でない例外だろ つまりサーチ自体のアフォバグがない保証で それを保証できないコードを出荷する作者の神経そのものの問題は もはやコードだのアルゴリズムだのの品質とは無関係
460 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 21:57:50.30 ID:tAHem2TH.net] つまり「俺の脳内基準で例外出さない関数は (規格で保証されていなくても)例外安全対策なんてクソ食らえだぜ」 ということですねふむふむ
461 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 22:06:08.66 ID:LnO11qfO.net] まあ商用でもシミュレーションソフトとか、メモリ不足や設定ミスしたらエラーも出さずに普通にセグフォで落ちる場合があるものも多いけど。 ご丁寧にエラーを出したところでメモリ増やすかメッシュ数減らすと言うのは変わらんわけで。
462 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 22:18:48.62 ID:91HGMZTw.net] >>456 状況次第じゃね?
463 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 22:29:44.19 ID:ccWKvjol.net] >>461 そういうソフトが蔓延ると原因把握するの面倒だからちゃんとバグ報告して欲しい。
464 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 23:50:58.34 ID:mRHfF9cR.net] 素人なんですが c言語 c++ java などなどそれぞれ主にどんな分野で使われていますか? プログラム言語がありすぎてワケわかりません
465 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 04:06:59.53 ID:JiEqdJhY.net] >>464 C:OSの中核、組み込み C++:OSガワ、ミドルウェア、ブラウザ、マルチメディア、言語処理系(Java含む)など Java:一般・業務・Webアプリケーション(大規模含む) シェアはJava > C ≒ C++ C/C++合わせてJavaと同程度
466 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 04:09:07.38 ID:JiEqdJhY.net] >>465 これのC++に書いた分野はCも使われる事が多いが、 主分野と言われたので省いた
467 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 04:30:48.06 ID:1CYnHFpe.net] >>461 世の中にある商用のシミュレーションソフトとやらのほとんどは おまいらが見たら噴飯物かあるいは卒倒するレベルのコードだと思う とくに国産ソフトは
468 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 06:31:50.30 ID:7j9PU2Vm.net] >>245 ↑は谷岡のノリで言った冗談だろ
469 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 07:10:33.24 ID:jOU/WMb9.net] むしろ商用ソフトで461のようにならないものが珍しい
470 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 07:58:11.21 ID:sh9Vl//D.net] >>469 設定ミスでフォルトするのはどうかと思うが、メモリ一不足の対応は難しいな
471 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 08:07:47.87 ID:GGDlYrLi.net] Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから その辺に対応するのがコツ
472 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 08:27:57.61 ID:6SIhh/2K.net] メモリ不足でセグフォはダメだろ
473 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 08:38:04.20 ID:CN4QadC3.net] 開始早々に落ちてくれるなら強制終了も受け入れよう。 相当な時間をかけた挙句に「メモリが不足しています」はいかんよ。
474 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 11:48:56.15 ID:RvW28ssM.net] セグフォになった時点でエラーを投げられないからセグフォはしょうがない。
475 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 12:52:53.74 ID:sh9Vl//D.net] >>471 > システム監視ソフト そう言う奴は起動してしまえば新規にメモリー確保したりしないから API 回りとかに気を配ればいい 普通のアプリケーンョンと同列に語っちゃダメだろ
476 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 17:42:12.67 ID:GGDlYrLi.net] >>475 システム監視ソフトだからといってメモリ確保しなくていいわけじゃないです そのソフトはどのプロセスがいつ起動してどれだけのメモリを使用していつ終了したかを ログするものでしたがその過程で新たなメモリ確保はどうしても発生します
477 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 18:11:10.64 ID:sh9Vl//D.net] >>476 で、確保できなかったらどうするんだ? ログは取れなくても生きてるだけでいいんかよ w
478 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 18:19:20.93 ID:GGDlYrLi.net] >>477 そう。メモリ確保できない間はどうしようもないので黙っている システムのメモリ状況が改善したら再びログを出力し始める 最後の最後まで生きていることが最重要なソフト
479 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 18:32:24.31 ID:GGDlYrLi.net] もう少し言うと、そのシステムではどれかのプロセスがメモリを食いつぶしてシステムクラッシュに るらしいという状況があって 俺が作った監視ソフトはどのプログラムが犯人なのかを突き止めるのが主目的だった 穀潰し犯人のプログラムは俺の監視プログラムより先に死んで、メモリが解放されるから それで俺の監視プログラムの目的は達成されるというわけ
480 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 18:36:22.68 ID:GGDlYrLi.net] 訂正 ☓ システムクラッシュにるらしいという状況があって ◯ システムクラッシュに至るらしいという状況があって
481 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 18:58:03.49 ID:sh9Vl//D.net] プロセス数の最大値を見積もって固定で確保しとけばいいだけ 最も知りたい時の状況を採れないとかアホすぎだろ
482 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 20:29:21.19 ID:GGDlYrLi.net] >>481 いざとなったときの余分なメモリ確保は行っていたんだが? アロケーションが出来なかった場合はそれを解放して自分が動けるようにする そういう考慮をしてもダメなケースっていうのはあるんだよ お前ごときにアホ呼ばわりされる筋合いは微塵もないからもう黙ってれ
483 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 21:20:35.31 ID:XI8hNy2k.net] >>482 > アロケーションが出来なかった場合はそれを解放して自分が動けるようにする だからアロケーションするなって言ってるのにバカなのか?
484 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 21:27:20.83 ID:IR1D3KHq.net] そういうプログラムの場合は必要なメモリは起動時に確保しておいて、実行中はそれを解放せず使い回すのが普通じゃないの? OSのAPIが内部でメモリ確保してみたいなのならそのAPIがメモリ不足でエラーを返す事はあるだろうけど、その場合c++の例外安全とは関係ないような。 わざわざ自前でthrowしていない限り
485 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 21:29:13.32 ID:DH+vdKhf.net] ほんとそう思うね > アロケーションが出来なかった場合はそれを解放して自分が動けるようにする ↑と あらかじめ確保しておいたメモリ内でやりくりするとのと どちらがスマートかと
486 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 21:31:23.88 ID:lnigE11c.net] Windowsのメモ帳が保存しようとすると しょっちゅう「メモリ不足です」と嘘つくのは 何なんだぜ
487 名前:デフォルトの名無しさん [2016/02/09(火) 21:34:37.23 ID:F3FfwO0D.net] メモ帳は嘘つきではないのです 間違いをするだけなのです
488 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 21:45:17.76 ID:7NZqnMQp.net] >>486 (万人に説明できないあるいは説明するのがめんどくさいエラーが発生しました。 ですがその原因が何であるか、例えばメモリ不足であるかどうかは当該ユーザーの 人生には何の関係もありません。そこで、ユーザーの時間を無駄にしないために 適度にもっともらしく、また検証不能であることを十分に示唆するエラーメッセージとして、 われわれが長い経験に基づき選択したのがこの)メモリ不足です
489 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 22:41:53.82 ID:jOU/WMb9.net] しかし多くの人が「絶対違うだろ」と確信するメッセージは ユーザーエクスペリエンス的に如何なものか
490 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 22:47:41.92 ID:IR1D3KHq.net] いやいや、もしかしたらという微妙な嘘を吐かれたら実害があるだろ これは洒落みたいなもので、言うならばイースターエッグの一形態
491 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 22:59:31.66 ID:efe/Md+W.net] 某FPSでチートソフトが検出された的なエラーでよく落ちるからエラーレポート送りつけたらVRAM不足だったことあったわ。 何が言いたいかって言うとエラーの内容は誤魔化さずに詳細までちゃんと書け。
492 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 23:41:41.32 ID:6SIhh/2K.net] free, deleteしてもOSには返却されない事を知らない馬鹿が多すぎる。
493 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 23:55:10.79 ID:GGDlYrLi.net] >>481 プロセス数の最大値があらかじめ分からないからこういう苦肉の策を取ったんだが お前もういいよ >>492 もちろんfreeやdeleteじゃなくOSに確実に返される方法を取ったよボケ
494 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 00:51:06.86 ID:xIPHXOxS.net] 質問です シェルスクリプトみたいに関数内に気軽に関数を定義して使いたいんですが こういうときはラムダ式を使えばいいんでしょうか? ラムダ式って主にソート用関数みたいに数行で終わる簡易な用途で使われる って聞いたんですが、別に普通の関数と同じ感覚で使っても問題ありませんか?
495 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 00:56:41.25 ID:rEABlirv.net] 別にかまわんよ
496 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 00:56:53.90 ID:73PfeV18.net] ラムダを関数内関数としても普通に使ってる。 コピペするとき依存性を無視してやりやすいからな。 自分の場合な。 auto F =[](){}; って感じだ。
497 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 01:11:43.56 ID:xIPHXOxS.net] ありがとうございます ラムダ式なんて言葉を聞くと仰々しく思ってしまいますが 普通に便利に使ってしまって問題ないんですね
498 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 02:12:23.35 ID:WclI5GwY.net] >>493 絶対落ちちゃいけない監視ソフト作った奴が最大値を知らないって? 白々しいな
499 名前:デフォルトの名無しさん [2016/02/10(水) 02:46:18.58 ID:WclI5GwY.net] ログなんてストレージ領域確保すりゃ十分なのに 何あたかも作ったかのように語るのかねこいつは システム自体にプロセス最大数がある事すらも知らなそうだし
500 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 03:19:40.03 ID:cNfi8Aot.net] >>498 ずいぶん詳しいようだから聞くけど、プロセス数の最大値をどうやって取得するんだよ まあそんな問題ですら無いんだけどね メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから お前に「こいつ」呼ばわりされても片腹痛いわ
501 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 08:59:08.05 ID:WclI5GwY.net] >>500 最大数がメモリとスタックから決まる事すら気づかん時点で終わっとるわな >メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから メモリなど無関係にAPIが動かなければ監視できないわな 正常時まで監視してればいいならログ取るだけでいいからメモリいらんわな 頭が悪いなんてもんじゃないなお前
502 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 13:20:19.27 ID:OnEbfKeK.net] >>493 > プロセス数の最大値があらかじめ分からないからこういう苦肉の策を取ったんだが Linux なら /proc/sys/kernel/threads-max を見ればいい Windows は明示的な上限はないけど、8GB メモリーで 7,000個弱 実機で確認すればすぐわかる そもそも >>476 ではプロセス上限なんて話はしてないから、普通に動いてるプロセス数の倍ぐらいでいいと思う > もちろんfreeやdeleteじゃなくOSに確実に返される方法を取ったよボケ 具体的にどうやったか書いてみな >>500 > メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから どの API がコケるんだ? プリミティブな API で内部でメモリー確保してる奴なんて滅多にないはずだが
503 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 13:22:20.62 ID:BgAJpbAv.net] プログラムが消費しているメモリ量を取得することってできますか
504 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 13:35:00.71 ID:CcpqYYAq.net] システムメッセージキューのメモリ管理をアプリで行ったとか、 もはや中学生の妄想レベル。
505 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 14:28:55.17 ID:cNfi8Aot.net] 妄想はお前だよお前 スキルもないくせにエラソーなことほざくアホどもとは付き合ってられんわ >>502 >どの API がコケるんだ? >プリミティブな API で内部でメモリー確保してる奴なんて滅多にないはずだが だからPostMessageすら失敗するような状況だって言ってるだろ 思い込みの「はず」で語ってくれるなよ
506 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 14:36:37.53 ID:CcpqYYAq.net] user32.dll側の責任でPostMessageが失敗する状況は無いんだ。 お前のアプリがヘボでPostMessageを呼び出す前にこけてるだけ。 そんな事もわからない中学生だから妄想って判断したんだよ。
507 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 14:37:27.03 ID:2z9ZUJCV.net] 16000割れでみんなイライラw まだまだ下げるよ!
508 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 14:38:27.35 ID:CcpqYYAq.net] 何をどうやって確保したら回避できたか言ってご覧 妄想中学生
509 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 14:58:55.83 ID:cNfi8Aot.net] >>506 PostMessageの戻り値を見たこともないゴミは黙ってろって 妄想中学生はお前だよお前 回避?何のことだね 回避できない状況のことを言ってるんだが
510 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 16:16:55.13 ID:CcpqYYAq.net] ぷぷぷ「ERROR_NOT_ENOUGH_QUOTA postmessage」で検索すると。 「お前のアプリがヘボ」という結論しか出てこないな。 しかも、根本的になおさずにメッセージキュー拡げて対応とか。中学生プログラマらしいや。
511 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 16:22:50.22 ID:OnEbfKeK.net] >>503 取得方法はOSによって違うし、メモリーと言っても色々ある とりあえず Windows なら GetProcessMemoryInfo 辺りでググってみて
512 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 16:25:20.02 ID:WclI5GwY.net] >>509 つまり何にも対処できてないのに対処したとか大ボラふいてたわけだ
513 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 17:09:41.86 ID:cNfi8Aot.net] もうお前らいいからw お前らみたいな低能が作った穀潰しゴミソフトがメモリを食いつぶし続けてる時の 対処法なんて限られてるんだよ己の無能力を自覚してもう黙ってれよ
514 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 17:37:32.35 ID:CcpqYYAq.net] 検索でトップの↓これを筆頭に質問者アホと言われて相手にされてない stackoverflow.com/questions/29567233/am-i-doing-anything-wrong-if-postmessage-returned-error-not-enough-quota メッセージキュー拡げて対応完了 キリッ wwww
515 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 17:47:40.99 ID:cNfi8Aot.net] いいから恥ずかしい妄想ゴミは黙ってろって メッセージキュー拡げるとかそういう話じゃないからw お前みたいなクズが作ったソフトがメモリを食いつぶしてる状況で生き残らなきゃ いけないソフトを作らなきゃいけないハメになることはお前らには死ぬまで無いんだからw
516 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 17:51:17.29 ID:CcpqYYAq.net] PostMessageが失敗するんだろ 論理が破綻してるぞ
517 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 18:02:45.61 ID:cNfi8Aot.net] 破綻してるのはお前の脳味噌だってことをそろそろ理解しろよ PostMessageが失敗したってことを認識できればそれなりの対処法はあるが お前みたいな低能に対処できる根本的な方法はない
518 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 18:15:32.39 ID:OnEbfKeK.net] >>505 > スキルもないくせにエラソーなことほざくアホどもとは付き合ってられんわ 苦し紛れに出して来たブロスセ数で玉砕しまくったアホに言われてもねえ w >>513 > 対処法なんて限られてるんだよ でも具体的にその方法は書けない 妄想ですから〜 ってオチ? w そもそも >>476 の監視ソフトで PostMessage を使うこと自体がバカっぽい
519 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 18:35:15.27 ID:cNfi8Aot.net] PostMessage使わないようしにたって同じことだよ そろそろ自分の愚かさを認識しろよ超絶低能
520 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 18:43:33.84 ID:cNfi8Aot.net] 俺は現実の実験に基づいて喋ってるが お前は低能くんにありがちなあつかましい自尊心に基づいて喋ってる
521 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 18:56:15.68 ID:VhPZ+OLx.net] クソ邪魔くせえ罵詈雑言はどうでもいい。 プログラマの端くれならコードで語れ。 どうせ守秘義務がどうとか無知には解らんだの捨て台詞しか書けねえとはわかっているがね。
522 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 19:01:36.21 ID:cNfi8Aot.net] 更に笑わせてくれる低能くんが出現したぞw
523 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 19:04:02.17 ID:VhPZ+OLx.net] 許す。好きなだけ笑えばいいぞ。 そのまま笑い死んでくれてもいいぞ。
524 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 19:06:27.25 ID:x/NF9K0j.net] 知識としておきたいから誰かまとめてくれ
525 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 19:11:44.13 ID:sTnZ5Yh7.net] お互いサンプルコード出して殴り合えよ
526 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 19:46:51.10 ID:b+YmgAEw.net] >>525 無理でしょ プロセス数の話ですら俺がググってちょっと具体的なこと書いたら、一切触れなくなったぐらいだし w コード書けるかどうかも怪しいレベルだと思う
527 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 19:53:57.44 ID:6eyh9AMR.net] ソフトウェア開発の生産性を阻害する「気軽に聞けない」ことの考察と対策 simplearchitect.hatenablog.com/entry/2016/02/10/175238
528 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 20:20:13.29 ID:+sMp0qjD.net] ずいぶん香ばしい奴みたいだったな
529 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:19:50.30 ID:cNfi8Aot.net] >>526 バーカシネ >Windows は明示的な上限はないけど、8GB メモリーで 7,000個弱 >実機で確認すればすぐわかる お前ごときが実機で確認した値なんてなんの意味もないんだよ 上限なんて無くメモリ量で決まる もっとも、これは最大プロセス数なんてどうでもいい話で 一匹の低能が作ったクソゴミソフトがメモリを食いつぶすすのを発見し そいつを血祭りにあげようというのが目的だったんだが? ちなみにそいつはもう死んだ
530 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:27:00.54 ID:lc1dGjcs.net] ここは怖いインターネットですね
531 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:30:42.73 ID:9qL9Qa6r.net] メモリ実装量でシステムセットが変わり、各種上限値が 階段状に上昇するなんてDDKのドキュメントに書いてある けどなぁ WDKとは言わないがSysinternalぐらいは目を通すのお勧め
532 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:31:02.91 ID:VhPZ+OLx.net] なんだ中坊どころか小卒かよ 構って損した
533 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:32:58.64 ID:cNfi8Aot.net] メモリリークしまくるプロセスがあるとプロジェクトの他のメンバーにどんだけ迷惑かかるか分かるか? 下手したらそのせいで無罪なのに過労死する奴が出てもおかしくない状況だったんだよ
534 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:36:50.07 ID:cNfi8Aot.net] ほんと有害レベルの低能の自我防衛本能からの行動パターンは画一的で笑っちゃうわ こういう行動パターンを示す奴とは関わっちゃいけない<俺
535 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:37:11.43 ID:BsX2uww2.net] >>492 断片化もするしな
536 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:38:16.88 ID:VhPZ+OLx.net] 今度はお涙頂戴か? 過労死なんざ知らんね、そんなのどうでもいい。 勝手に死なせておけばいい話。嫌ならトンズラすればいい。 ついでにお前も後を追えばもっと良い。
537 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:41:13.17 ID:BsX2uww2.net] ていうかメモリリークする奴が居ることまでわかってるんなら パフォーマンスカウンタで全プロセスのメモリ消費のグラフを取れば良いんでは… perfmon→データコレクタセット→ユーザー定義、 以下ウィザードに従って全プロセスか怪しいプロセスにカウンタを仕掛ける Private Bytesが主なターゲット。 場合によってはWorking Setも気にする
538 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:41:13.81 ID:cNfi8Aot.net] >>563 はいはい極悪低能プログラマの本音を聞きました
539 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:44:30.04 ID:BsX2uww2.net] というよりよく考えたら、いかにメモリリークし続けるプロセスが居るからと言って 他のプロセスがPostMessage()に失敗するまでメモリ不足になるかっていうと疑問 リークするだけなら(アクセスされていないのだから)まずそいつがディスクに掃き出されるのでは…
540 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:48:42.82 ID:EIvsPcYN.net] >>529 > お前ごときが実機で確認した値なんてなんの意味もないんだよ ググったって書いてあるのにバカすぎるだろ https://technet.microsoft.com/ja-jp/windows/mark_04.aspx 自分の為に確認してくれるとかバカに限って自意識過剰なんだから笑えるわ > もっとも、これは最大プロセス数なんてどうでもいい話で だから固定で持っとけ って言う話なのに自分で勝手に難しくして自爆してるだけ > ちなみにそいつはもう死んだ 相変わらず技術的な話は全くなし w
541 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:48:59.49 ID:cNfi8Aot.net] >>537 それがそれで済む状況ではなかったんだよ どれかのプロセスが何かの条件によってメモリを食いつぶす行為に走りだす そのせいで他の善良なプロセスまで巻き添えにする その為パフォーマンスカウンタの特別版を作る必要があった もうこの話はいいです。何年も前のいやな思い出だから
542 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:53:15.12 ID:cNfi8Aot.net] >>540 いつまでそれにこだわってるんだよ低能 ググってくれてご苦労様だけど(後学のために頭の片隅には置いておいてやるよ) 最大プロセス数なんて全く関係ない話だって言ってるだろ
543 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:58:22.56 ID:WclI5GwY.net] >>537 ワロタ確かにこれでいいわ >>541 パフォーマンスカウンタすら失敗する()なら メモリ関連APIをHookかInjectionして 使用量が一定以上超えたらkillでも良いわけ そういう一連の馬鹿発言からして まともにプログラム作ってるとは言い難いな
544 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 22:59:37.61 ID:EIvsPcYN.net] >>537 まあ普通そうするわな わざわざ中途半端なツール作ってドヤ顔するのが趣味なんだろ w
545 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:05:47.98 ID:cNfi8Aot.net] ここでエラソーなこと言ってる奴らが実務では使い物にならないゴミどもだってことが よく分かるエピソードでしたチャンチャン
546 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:20:15.88 ID:WclI5GwY.net] 勝利宣言クッソワロタw お前の言う実務は2chでの妄想活動だろ? んなもん使い物にならなくていいわw
547 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:21:04.10 ID:VhPZ+OLx.net] コードの一片すら示せない偽装プログラマに言われてもねぇ…
548 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:24:21.16 ID:cNfi8Aot.net] 僕ちゃんたちはパフォーマンスモニター知ってるよ(ドヤ)
549 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:28:04.89 ID:+sMp0qjD.net] すっかり玩具だな
550 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:28:29.01 ID:EIvsPcYN.net] パフォーマンスカウンタの特別版作れる僕って凄いでしょ (ドヤ)
551 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:29:05.09 ID:cNfi8Aot.net] 真面目なエンジニアさんはこの状況をよく見てください 足を引っ張ることしかしかしない有害人物どもの自己保存言動パターンはいつもこういうのです
552 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:34:16.19 ID:lc1dGjcs.net] いつものような暴れた最後に涙目の展開は無いものか つまらん
553 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:44:44.85 ID:VhPZ+OLx.net] コードの一片も出せない似非エンジニアが喋ってやがるwww
554 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:45:54.18 ID:lc1dGjcs.net] コードが無いと精神の安定が保てないような異常者は はよ病院に行った方がいい
555 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:47:38.44 ID:WclI5GwY.net] 十分涙目展開だろ? こういう真面目ぶってる不誠実な人間ほど、 誠実な他人に助けを求めるのは世の常だな
556 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:53:00.48 ID:WclI5GwY.net] 読み返したら最初から「もういいから」って涙目になっててワロタw ごめん謝るわw
557 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 00:02:18.12 ID:LEO/MbWa.net] 結局どういう話だったのかまとめてくれ
558 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 00:09:28.61 ID:rWlIZ3EB.net] >>557 極端なリソース不足に陥った時の対処を知らない低能が かつての自分の苦労をドヤ顔で自慢したら、 同レベルの低能がアホなレスしてカオスになった
559 名前:デフォルトの名無しさん [2016/02/11(木) 00:09:54.31 ID:vxNioHuU.net] PostMessageが低メモリ下でFAILする根拠は何も出せなかった、中学生。
560 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 00:20:41.21 ID:vOJNqTQW.net] みんな楽しそうだな(´・ω・`)
561 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 00:42:04.61 ID:ZvFHDsOW.net] >>588 参加したかったなら今から参加しても良いんだぞ ぜひ有能クンの高度な技術を披露したまえ
562 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 00:42:45.47 ID:ZvFHDsOW.net] >>558 な
563 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 01:02:36.71 ID:xFHLdcla.net] この手の煽り合いって海外の掲示板でどんくらいあるんですか? こういう殺伐さと生暖かさが入り混じったスレって、もしかして古今東西2chだけ?
564 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 04:20:00.07 ID:pNz7UH/B.net] ideone.com/Ptd0tn これなんでエラーになるかご存知の方いませんか。 循環参照だと思うのですが、どう解決するべきか困っています。 普段からあんまり凝ったことしないのでこの規模はほとんどないです。 VCで開発していて、ソース分割しています。 内容は、ヒットアンドブローのホストクライアント型の試験みたいなもんです。
565 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 04:32:08.20 ID:COETO4tD.net] >>564 エラーの理由はエラーメッセージ書いてあるだろ。 一般的に A, B が循環参照になっているなら A, B をひとつにまとめて C としてしまうか、 あるいは A, B から循環参照を生じさせている部分を新たに C に抽出して A, B ともに C を 参照するようにするか、という解決方法がとれることが多いと思う。 そのコードもたぶんこれでいけるんじゃないの?
566 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 04:40:01.55 ID:pNz7UH/B.net] >>565 失礼かもですが、もうちょっと詳しくお願いします。 普段やらないことやってるので何が起きてるのか把握していません。 typedefを切り離せってことですか?
567 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 04:42:30.20 ID:COETO4tD.net] >>566 手取り足取り教えるつもりは無いよ。どうなればいいのかよくわかってないし。 「typedefを切り離せってこと」かもしれないと思うなら、試してみればいいでしょ。
568 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 04:48:34.82 ID:pNz7UH/B.net] テストを書いたのでコンパイル通してこれからデバッグでした。 うーん。切り離したくないんですよねぇ。 明日考えよ。
569 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 05:49:59.07 ID:4ThVUQw6.net] なんでメンバ関数の定義をすべてクラス定義の中でやってるの? ICodeBreakerClientを参照しているメンバ関数を全て ICodeBreakerClientの定義の下に持っていけば あっさり解決するような気がするけど。
570 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 05:57:04.43 ID:4ThVUQw6.net] おっと、持っていくのはメンバ関数の定義ね。 メンバ関数の宣言と定義の違いは分かる?
571 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 05:58:04.84 ID:r+XipyqS.net] >>599 まだうだうだ言ってるのかw低能くんは暇だねえある意味羨ましいよ >PostMessageが低メモリ下でFAILする根拠 根拠だと?アホまるだしだな。当然根拠は実験結果だよ お前試したことないだろ
572 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 06:12:06.03 ID:r+XipyqS.net] 599じゃない>>559 だった
573 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 06:12:25.49 ID:pNz7UH/B.net] >>569-570 回答ありがとうございます。 一応定義と宣言の区別はついてると思います。 原因はワンヘッダーにがーっと書いてるからですかね。 CPPに分けてみるか。
574 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 06:39:24.85 ID:rWlIZ3EB.net] >>571 お前にヒントをやろう >>509-510 を読め >>510 はリファレンスを読むオツムが無かったので勘違いレスをずっと続けている
575 名前:デフォルトの名無しさん [2016/02/11(木) 06:42:16.64 ID:vxNioHuU.net] >>571 >>>599 >まだうだうだ言ってるのかw低能くんは暇だねえある意味羨ましいよ >>PostMessageが低メモリ下でFAILする根拠 >根拠だと?アホまるだしだな。当然根拠は実験結果だよ >お前試したことないだろ 実験結果wwww やっぱり中学生。wwww そんな事言ってんのは世界中でお前だけだよ。 今回は特別に教えてやろう。(爆笑) 低メモリ下でお前のヘボアプリがメッセージ処理しきれないのが真の原因。 つまりヘボアプリの作りが悪い。世界中で同じ質問した質問者がもらった答えと同じだったな。
576 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 06:56:49.06 ID:r+XipyqS.net] 『今回は特別に教えてやろう。(爆笑) 』 ああこいつだったかw こいつが自慢気に出してるgoogle「ERROR_NOT_ENOUGH_QUOTA postmessage」には 低メモリ下の話なんて見つからないんだが PostMessage() function returns ERROR_NOT_ENOUGH_QUOTA ... loop for 700 times, but the disk space and memory are still big enough. とかはあるけどね。逆に言うと低メモリ下ではPostMessageがエラーを返すのは常識で お前だけだよそこにケチつけてるバカは
577 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 07:34:36.75 ID:WJf9jt/h.net] >>538 , >>561 , >>571 専ブラ使えよ フルボッコされた涙目だとアンカーも付けにくいだろ w
578 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 07:55:30.76 ID:vxNioHuU.net] 「今回は特別に教えてやろう」はお前のような低能をバカにするにふさわしい、あのバカが残した名言。 > 低メモリ下の話なんて見つからないんだが 当たり前だ。世界中でそんな結論に至った低能はお前だけだという証明。 今回も特別に教えてやろう。エラーがでたらエラーの理由を調べなきゃダメだぞ。中学生。 https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms644944(v=vs.85).aspx | To get extended error information, call GetLastError. GetLastError returns ERROR_NOT_ENOUGH_QUOTA when the limit is hit. と書いてあり、さらに | There is a limit of 10,000 posted messages per message queue. | This limit should be sufficiently large. If your application exceeds the | limit, it should be redesigned to avoid consuming so many system resources. | To adjust this limit, modify the following registry key. と書かれている。 PostMessageがFAILするヘボアプリなんか書いたことが無いので、試しにCreateWindow直後に while (PostMessage(hWnd, WM_NULL, 0, 0)) ; するプログラムを書いてみると、ERROR_NOT_ENOUGH_QUOTAが発生する事が確認できる。 お前のヘボアプリが原因だな、証明終了。
579 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 08:27:04.76 ID:pNz7UH/B.net] www.dotup.org/uploda/www.dotup.org734087.zip おかげさまでコンパイルも無事通り最初のデバッグができました。 リファレンスにタコなAI突っ込んどいたので誰か遊んでください。 ありがとうございました。 一応ライセンスはMITライセンスでいいです。 自己責任でおながいします!
580 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 08:35:31.59 ID:LEO/MbWa.net] IDが変わっててよくわからんから君ら昨日と今日のIDを等式で繋いでくれよ
581 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 08:55:50.21 ID:vxNioHuU.net] ID:r+XipyqSとID:rWlIZ3EBが低能ぶりでそっくりだが、 ID:r+XipyqSはシステムリソースを食い尽くすアホアプリを特定する監視プログラムを作ろうとして プライベートリソースを食い尽くすアホ**2アプリを作ってしまった無能。 ID:rWlIZ3EBは話題についてこれない低脳。無視して良い。
582 名前:デフォルトの名無しさん [2016/02/11(木) 09:20:37.71 ID:JNPPvkDO.net] C++の標準ライブラリの貧弱さは異常
583 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 09:33:17.55 ID:EuRhj+pR.net] string関連は特に酷いよな
584 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 09:34:54.74 ID:OZhLkZUr.net] ライブラリ自体が飯のネタになってた時代の言語だからな
585 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 09:50:04.55 ID:pNz7UH/B.net] >>582 自分に必要なライブラリスクラッチしてると実力つくぞ。 ただ、環境依存系はきついけど。
586 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 09:57:52.64 ID:rWlIZ3EB.net] ID:lc1dGjcs = ID:rWlIZ3EB しかし>>576 がリファレンス読めない馬鹿ではなく リファレンスも読もうとしない低能だったとは
587 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 10:01:08.51 ID:ZvFHDsOW.net] >>580 このアホさ加減から言ってID:rWlIZ3EB=ID:cNfi8Aotだろ 別人装ってるけどなw
588 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 10:49:54.44 ID:vxNioHuU.net] ID:lc1dGjcs = ID:rWlIZ3EBはアスペっぽいな。放置推奨。
589 名前:r mailto:sage [2016/02/11(木) 10:54:32.20 ID:ECJX98k8.net] このスレの住人ってどんな環境使ってるんだ? なんかWin+VS環境が多い印象なんだが、LinuxやMacでClang使ってる奴はこのスレでは少数派?
590 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 11:36:47.06 ID:unvLhFXs.net] 仕事の話なのかオナニーの話なのか
591 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 13:29:43.31 ID:WJf9jt/h.net] 本人: 仕事の話のつもり 本人以外: またオナッてら
592 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 13:32:04.04 ID:r+XipyqS.net] >>578 アホすぎて返す言葉もないわ お前が引用した文はメッセージキューがいっぱいになったときの挙動だろうが それのどこに低メモリ下の話があるんだよ ERROR_NOT_ENOUGH_QUOTAなんてお前が勝手に引っ張り出してきただけで 俺が言ってるのはキュー溢れの話じゃないから 何が「証明終了」だよこのクソバカ
593 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 13:39:36.40 ID:r+XipyqS.net] >>578 >PostMessageがFAILするヘボアプリなんか書いたことが無いので、試しにCreateWindow直後に >while (PostMessage(hWnd, WM_NULL, 0, 0)); >するプログラムを書いてみると、ERROR_NOT_ENOUGH_QUOTAが発生する事が確認できる。 得意気に言ってるけどそんなもん当たり前の話だよ メッセージキューだって無限じゃないんだから まずは低メモリ下での実験をして低メモリなだけじゃPostMessageがエラーを返すことはない という証明をしろよ この低能シッタカくん
594 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 13:46:20.87 ID:COETO4tD.net] >>592 リファレンスには「低メモリ下の話」は載ってないってことだよね? リファレンスに載ってる ERROR_NOT_ENOUGH_QUOTA と "5 (access denied)" 以外の どのエラーコードが返ってきたの? https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms681381%28v=vs.85%29.aspx
595 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 13:57:39.95 ID:r+XipyqS.net] >>594 さあもう10年以上もことで何のエラーだったかは覚えてないけど 低メモリ下ではPostMessageがエラーを返すことは事実だよ newとかmallocが失敗するようになる前にそうなる。 XPだったと思うけどもしかしたらWindows2000だったかも知れん。 その監視プログラムのソースは持ってるから再び試すことは可能ではあるけど そこまで暇人じゃない。 まあOSバージョンが何にしろ低メモリ状況ではAPIがちゃんと動けなくなることがあるなんていうのは 当たり前の話だと思うが???
596 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:07:17.11 ID:r+XipyqS.net] 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら その証明プログラムを書くなんて簡単な事だよ まずそれをやれよ 俺は今超絶忙しいから、低メモリ状況ではAPIがエラーを返すことがあるなんて当たり前のことを わざわざ証明する気にはなれないね悪しからず こんな当たり前のことも理解できない低能はどんだけ俺に迷惑かければ気が済むんだよ???
597 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:10:14.16 ID:xD0FV+ye.net] 悪魔の証明っぽいんですけどそれは大丈夫なんですかね?
598 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:13:42.80 ID:Nr5EvEk2.net] 低レベルAPIってスタックも積まないしメモリも使わないのに低メモリ下でこけるのはどういうときなんだろ いまいちイメージができない
599 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:15:13.30 ID:r+XipyqS.net] あんまりしつこくすると俺の得意技の処刑プログラムを発動させるぞ 過去の苦い思い出があるからなるべくそれは避けたいんだけど。。。
600 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:24:50.96 ID:r+XipyqS.net] 間接的にとはいえ人を殺すというのは、そいつがどんなクズだったとしても精神的に深いキズを残す そんな修羅場を乗り越えたことがある者だけが俺に向かって石を投げなさい(救世主モード)
601 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:34:35.16 ID:COETO4tD.net] >>595 ん?それじゃ ERROR_NOT_ENOUGH_QUOTA だった可能性も否定もできないってことになるね。 https://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/8fcf1a75-8cbb-4523-991f-88e0088ac524 PostMessage() の本来の動作に追加のメモリ確保が必要なわけでもないんで、 低メモリ状況で失敗するのが当たり前とは思わないなぁ。 低メモリ→スラッシングなどで極端にキューの取出しが滞る→キューがいっぱい、っていう シナリオもありそうだし。10年以上前ならなおさら。 念のため言っとくけど、関数が失敗する理由がドキュメントですべて列挙されてるとは思わないから、 他のエラーの可能性を否定してるわけじゃないよ。そういう、ドキュメントに載ってないエラーの例が あれば面白いなぁと思ったまで。
602 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:40:04.55 ID:2zWchetY.net] エラーコードも書けない 回避方法も書けない ネタ決定でしょ まともなプログラマなら、自分は覚えてなくてもすぐエラーコードや回避方法はわかるはずだから
603 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 14:59:37.10 ID:8QEa0xty.net] いいねえ、その処刑プログラムとやら、ぜひ発動させてくれ。 今。 ここで。
604 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 15:17:40.53 ID:rWlIZ3EB.net] ・リファレンス上、PostMessageは失敗することがある ・リファレンス上、メモリ不足でエラーにならないとは書かれていないようである ・実際にメモリ不足でエラーになったと主張する>>509 が登場 この状況なんだから「メモリ不足エラーというリファレンス上許された挙動があり得ないと言うならそれを証明しろ」 と言えばいいのにr+XipyqSは
605 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 15:37:44.95 ID:r+XipyqS.net] 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』 こういう当たり前の主張にしつこくケチつけなきゃいられないようなタイプのクズ っていうのは現実の社会にもそれなりに実在するから真面目な人は気を付けたほうがいいよ もっともここでそれをやってるのは現実の社会から干されたどうしようもないゴミクズだろうが
606 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:06:50.17 ID:8QEa0xty.net] クズでもなんでもいいから早く処刑プログラム発動させろよ。 使えねえ奴だな。同類扱いされるぞ?
607 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:31:59.03 ID:r+XipyqS.net] >>606 発動させるときは不言実行だからな お前は対象ですらないけどw
608 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:40:31.83 ID:r+XipyqS.net] 俺の処刑プログラムは簡単にはその発動が察知されないようにできている 悪いけどお前らみたいなへボプログラマじゃないんでね 誰も知らないうちにターゲーットはご臨終(ナムナム)になってて 俺はゲラゲラ笑ってる
609 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:44:15.33 ID:8QEa0xty.net] わかったわかった 夢の中で好きなだけ発動させてなさいね
610 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:45:37.29 ID:Qn21xKPQ.net] >>587 > このアホさ加減から言ってID:rWlIZ3EB=ID:cNfi8Aotだろ 俺もだんだんそう見えてきたw リファレンス、リファレンス、リファレンス リファレンス上、リファレンス上、リファレンス上
611 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:45:46.47 ID:rWlIZ3EB.net] 「そいつはもう死んだ」 「真面目なエンジニアさんはこの状況をよく見てください」 「間接的にとはいえ人を殺すというのは、そいつがどんなクズだったとしても精神的に深いキズを残す」 「修羅場を乗り越えたことがある者だけが俺に向かって石を投げなさい(救世主モード)」 ここは中学校じゃないぞ
612 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:50:37.94 ID:r+XipyqS.net] 俺は精神的に中学生かも知れないが(嬉しい!) お前らなんてそれ未満だからならw
613 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 16:53:21.89 ID:r+XipyqS.net] 俺にケチを付けたいクズは 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』 まずこの当たり前の主張が誤りであることを証明しろよ それが出来ないならお前ら共には生きる権利はない
614 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:02:41.95 ID:R5nKPKgb.net] ここまで臭い奴は2chでもそう居ない ここ最近で一番ひどい
615 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:15:45.76 ID:r+XipyqS.net] 議論で勝てそうに無くなったら訳の分からない人格攻撃に走るという行為はド低能にありがちな典型的なもの もうそろそろチョン認定してくれてもいんだぜw
616 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:19:03.88 ID:rWlIZ3EB.net] >>615 今さらだが>>586 のアンカーが間違ってたわ 576でなく578だったスマン
617 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:19:34.12 ID:R5nKPKgb.net] 2chで生きる権利がないとか無茶苦茶言うやつには言われたくない言葉だな
618 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:25:34.85 ID:rWlIZ3EB.net] 「もうそろそろチョン認定してくれてもいんだぜw」 腹痛ぇ お前はどこまで日本語弱いんだ
619 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:30:57.72 ID:r+XipyqS.net] はいはい。低脳どもとの会話にありがちな典型的なパターンに陥りました さいならゴミクズ有害低能くんども
620 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:31:22.96 ID:R5nKPKgb.net] >議論で勝てそうに無くなったら訳の分からない人格攻撃に走るという行為はド低能にありがちな典型的なもの あーはいはい、 >このクソバカ >この低能シッタカくん >こういう当たり前の主張にしつこくケチつけなきゃいられないようなタイプのクズ >現実の社会から干されたどうしようもないゴミクズだろうが >お前ら共には生きる権利はない ↑のことですね
621 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:35:34.67 ID:S066gs71.net] もうほっといてやれよw 流れ作って>>619 で緊急脱出したつもりなんだからw
622 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:44:20.81 ID:chyZ04S/.net] >>5「ベクタグラフィックスの為のクラスにスマポを使いたいんだけど」 >>39「こんなんでどない」 >>52「>>39 例外でリークする糞コード晒してんじゃねーぞハゲ。大人しくスマポ使っとけ。」←vectorがbad_alloc例外を出した場合の話 >>226「>>52 つまり君はこうすれば良いと思うわけだね?」 >>227「>>226 push_backの前にreserveすりゃ良いだろ」 >>449「push_backの前に一々reserve、ダメ絶対」 >>452「実装によっては遅くなるからといって一概に駄目なんて馬鹿げてる。例外安全の方が大事。」 >>460「つまり規格に書いてない例外は無視すりゃ良いって事だな!」 >>461「メモリ不足で落ちるとか商用でもよくあるから気にしなくても良いんじゃね?」 >>470「メモリ不足の対応は難しいもんな」 >>471「んなこたーない。メモリ不足で落ちる前にPostMessageなんかのAPIが失敗し始めるからそれを検出すればおk」 ここからPostMessageがメモリ不足でコケるかどうかという話になり、 リファレンス上にはメモリ不足に関する記述が無いんだがって話が出てきて お前らプログラマなら実際に動かして試せよ・・・・・・ 俺は手元にあらゆるソフトがメモリ不足でコケるような環境にしても良いマシンが無いからやらないけど。
623 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:49:36.27 ID:3YTkrGr2.net] >>622 その中で俺の発言は>>460 だけなのだが 日本語が読めなかったのか?
624 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:53:09.04 ID:r+XipyqS.net] 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』 みたいな当たり前のことに何故かしつこくケチを付け人格攻撃まで始めるキチガイ というのは不思議なことにこの社会には少なからず実在します 真面目な人はこのタイプには十分に注意してくださいね もっとも、ここでそれをやってるクズはゴミ社会すらから爪弾きにされたようなタイプでしょうがw
625 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:53:50.89 ID:chyZ04S/.net] 「なるほどなるほど例外を出すって書かれて無ければ出さないもんだと思い込むんですね」 って読んだんだけど間違ってた? # 悪いのは目ではなく頭の方です
626 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:59:08.81 ID:R5nKPKgb.net] >議論で勝てそうに無くなったら訳の分からない人格攻撃に走るという行為はド低能にありがちな典型的なもの あーはいはい、 >このクソバカ >この低能シッタカくん >こういう当たり前の主張にしつこくケチつけなきゃいられないようなタイプのクズ >現実の社会から干されたどうしようもないゴミクズだろうが >お前ら共には生きる権利はない >しつこくケチを付け人格攻撃まで始めるキチガイ ← New >低脳どもとの会話 ← New >ゴミクズ有害低能くんども ← New >それをやってるクズはゴミ社会すらから爪弾きにされたようなタイプ ← New ↑のことですね
627 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 18:14:00.19 ID:vxNioHuU.net] codepad.org/NOUfjFJY の実行結果 1816 28 9999 Not enough quota is available to process this command. APIの返り値確認しても、エラーコードを取得しないと意味がないぞ。中学生。 処刑プログラムか楽しみだなあ。
628 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 18:47:47.05 ID:rWlIZ3EB.net] メモリ不足でエラーになったと宣(のたま)う奴に対して メモリ不足と関係無いエラーを起こすとんちんかんなプログラムを見せて、 どうすると人はここまで馬鹿になれるのだろうか
629 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 18:54:09.21 ID:vxNioHuU.net] >>628 特別に教えてやろう。(爆笑) > メモリ不足と関係無いエラーを起こすとんちんかんなプログラムを見せて、 VirtualAllocって知ってる? > newとかmallocが失敗するようになる前にそうなる。 アプリのメモリ管理とuser32のメモリ管理を混同してるようだから、知らなくても無理はないか。 処刑プログラム待ってるよ。
630 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:02:18.97 ID:8QEa0xty.net] 超絶忙しいくせに丸一日レスし続ける時間はあったみたいだな なんとも不可解な話だ
631 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:23:27.23 ID:WJf9jt/h.net] >>604 > この状況なんだから「メモリ不足エラーというリファレンス上許された挙動があり得ないと言うならそれを証明しろ」 >>613 > 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』 > まずこの当たり前の主張が誤りであることを証明しろよ 低脳にありがちの悪魔の証明 PostMessage のエラーコードと回避方法書くだけでいいのに 何故かやらない どうみても妄想でしょ
632 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:23:30.50 ID:UQTXGuAz.net] うむ 実に香ばしい
633 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:32:15.69 ID:rWlIZ3EB.net] 仕様上あり得るとされるものを証明する必要は無い 根拠も無く仕様を否定しておいて、悪魔の証明なので根拠を出せないとか ここまで頭が悪いと生きているのも辛いだろうな リファレンス「メモリ不足エラーはあり得る」 ↓ >>509 「確かに俺はかつて見た」 ↓ 馬鹿「あり得ない」「証拠を出せ!」「無いことを証明するのは悪魔の証明だ!」
634 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:33:41.27 ID:vxNioHuU.net] >>622 > リファレンス上にはメモリ不足に関する記述が無いんだがって話が出てきて ・PostMessageの動作はMSG構造体をキューに追加して、なんらかの方法で通知 ・PostMessageは高速に動作しなけらばならない ・MSG構造体のサイズは高々28バイトである ・通知プリミティブに何を使ってるかわからないけど、メモリのアロケートは不要 これらから、PostMessageのつど、メモリを動的に確保してるはずがないと推測できる じゃ、なんでFAILするかというとリファレンスにのってるERROR_NOT_ENOUGH_QUOTAが最有力 ID:rWlIZ3EBはPostMessageがFAILした事を観測して、おバカな結論にたどり着き、なにをやってるかわからないクソアプリを作ってしまったでゴザル 不正なhWndを渡せば別のエラーが発生するだろうけど、あまりに初歩的なので除外。 でもID:rWlIZ3EBはそれすら可能にする無能レベル
635 名前:デフォルトの名無しさん [2016/02/11(木) 19:37:09.82 ID:vxNioHuU.net] >>596 > 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら > その証明プログラムを書くなんて簡単な事だよ > まずそれをやれよ やってあげたのに、プログラムを読めなかったでゴザルの巻
636 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/11(木) 19:53:16.50 ID:RYWEZJ3R.net] :-) _ _ _ _ _ (切り取り線) _ _ _ _ _ ここから下は二月号のおまけだよ!
637 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:54:52.75 ID:99mWF8FH.net] 最近だとむしろ新鮮だな、ここまでのバカは
638 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:55:03.32 ID:chyZ04S/.net] >>634 俺もPostMessageがメモリを動的に確保するなんて話は信じられん が、実際にそうなったと言ってるのだからそういう夢でも見たんだろう。 >>627 4MB単位じゃなくて、もうちょっと細かい単位で確保しても同じ結果になるよね? ページの粒度はIntel系なら4KBだと思うんだけど 誰かWindowsをGPLにしてくれ。読みたい時に読むから。
639 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 19:56:07.63 ID:chyZ04S/.net] 6が抜けた
640 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 20:04:24.71 ID:vxNioHuU.net] 無能ID:r+XipyqSは証拠出されて逃亡済みだったか、ID:rWlIZ3EBは触っちゃいけないアスペの方だった。 まあ、無能とアスペ、どっちも社会の役に立たないクズなのででうでもいいけど。 ちなみにXp64で32bitアプリとしてコンパイルしたのを実行したら 1816 27 10000 unknown error 2G弱でVirtualAllocが失敗するのはアプリのメモリ空間の制限だね 念のために言っとくけど、user32はアプリのメモリ空間で動作してるので、 「システム全体のメモリが不足する状況と違う」とかおバカな事を言いださないように
641 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 20:23:57.41 ID:vxNioHuU.net] >>638 みたのはPostMessageがエラーになる事だけだよ。 > さあもう10年以上もことで何のエラーだったかは覚えてないけど とか言ってるけど、エラーコード取得したならそういう印象的なエラーは憶えている、 実際無能が服を着て歩いてるID:rWlIZ3EBでもエラー自体は憶えてたし。 エラーコードまで取得してなかったんだろうな。これが合理的な説明。
642 名前:デフォルトの名無しさん [2016/02/11(木) 20:25:39.69 ID:IhmK9YPs.net] sendmessage関数の使い方について教えて下さい。 自作システムからとあるシステムをsendmessage関数を使用して自動操作したいと考えています。 環境はVisualStudioのC++系です。 質問@ sendmessage関数にて「ctrl + A」を送信するコードをご教授下さい。 現状以下になるか?と想定しています。 SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0); SendMessage(wh , WM_KEYDOWN , *Aに相当する何か* , 0); SendMessage(wh, WM_KEYUP, VK_CONTROL, 0); SendMessage(wh, WM_KEYUP, *Aに相当する何か*, 0); *Aに相当する何か*を教えて下さい。 また*Aに相当する何か*のコードを調べる方法も教えて下さい。 そもそもこのコーディングであっていますか? 質問Aその他の自走操作関数について SendMessage、PostMessage 以外に自動メッセージを送信する関数はありますか?
643 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 20:49:05.18 ID:vxNioHuU.net] 誤 実際無能が服を着て歩いてるID:rWlIZ3EBでもエラー自体は憶えてたし。 正 実際無能が服を着て歩いてるID:r+XipyqSでもエラー自体は憶えてたし。
644 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 20:49:36.44 ID:WJf9jt/h.net] >>641 > > さあもう10年以上もことで何のエラーだったかは覚えてないけど > とか言ってるけど、エラーコード取得したならそういう印象的なエラーは憶えている そもそもソースがあるらしい(>>595 で口走ってる)ので、まともなプログラマーならエラーコード見て回避策を講じてるはず って >>602 で指摘したら、ガン無視 w PostMessage がエラーになったから適当にメモリー解放したらたまたまうまくいった ⇒ 俺スゲー発見しちゃった!! ってとこじゃね?
645 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:05:40.00 ID:vxNioHuU.net] >>638 もう一個根拠追加 ・メッセージキューは固定長である これらの事実からメッセージキューはMSG構造体のアレイだと思われる 28バイト*10000で高々280Kバイト、へみたいなもんだね アレイならERROR_NOT_ENOUGH_MEMORYなんて発生するはずないね
646 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:11:11.48 ID:WJf9jt/h.net] >>642 とりあえずこの辺りを見てみて m.chiebukuro.yahoo.co.jp/detail/q1047081310
647 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:27:36.84 ID:rWlIZ3EB.net] 駄目だ>>615 の「もうそろそろチョン認定してくれてもいんだぜw」がじわじわ来る ブロント級の迷言
648 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:44:18.34 ID:r+XipyqS.net] >>644 やれやれどうしようもない馬鹿揃いだな こんなバカだから一日中張り付いてる暇があるんだな >まともなプログラマーならエラーコード見て回避策 お前みたいな低能に言われなくても回避策は講じたよ こういう状況では回避策なんてないという回避策だけどな いい加減、自分が関わったことのない、これからも一生関わることのないような 事柄に知ったか発言するのは止めろ見苦しいぞ超絶低能
649 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:48:08.11 ID:vxNioHuU.net] >>648 > 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら > その証明プログラムを書くなんて簡単な事だよ > まずそれをやれよ やってあげたけど、プログラム読めませんかあ?
650 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 21:52:48.88 ID:r+XipyqS.net] >>638 >俺もPostMessageがメモリを動的に確保するなんて話は信じられん 俺だって最初はビックリしたよ でも低メモリ状況ではそういうことがあるというか、そもそも低メモリ下でAPIが エラーを返しても誰も文句は言えないはずなのだが? Windows7以降ではPostMessageの挙動は変わってるかもしれないけどね 気になるなら自分で試してみれば?極限的なリソース不足の時の APIの挙動の詳細なんて再確認してやる暇なんてないし
651 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:00:10.03 ID:r+XipyqS.net] >>649 >やってあげたけど、プログラム読めませんかあ? まさか>>627 のことかw > while (PostMessage(hWnd, WM_NULL, 0, 0)) VirtualAllocで6メガづつ確保するようなコードさらしてこの状況の確認になると思ってるのかwww
652 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:05:31.98 ID:vxNioHuU.net] 7で変わったかとか言い出したぞ。爆笑 xp64でもおなじ動作という事実には目をつぶるらしい
653 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:05:39.02 ID:EuRhj+pR.net] SendMessageだと受理されなくてPostMessageだと受理される場合があるけどなんでなんだろうか
654 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:06:13.06 ID:rWlIZ3EB.net] プログラムは読んだが何の証明にもなっていないので 「論理的思考が出来ない低能なんだろう」 ということを再確認しただけだったな
655 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:09:15.19 ID:r+XipyqS.net] >>652 変わったかもしれないだ 確認なんてしてねーよ話を捻じ曲げるな卑怯者
656 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:10:17.25 ID:WJf9jt/h.net] >>648 もう一回書くね w >>602 > エラーコードも書けない > 回避方法も書けない > > ネタ決定でしょ
657 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:12:35.67 ID:vxNioHuU.net] >>651 思ってるよ user32はkernel32のGlobalAlloc,LocalAlloc ntdllのRtlAllocateHeapしか使っていない。 VirtualAllocがFAILする状況を作り出せば、どれを使っていても同じ事 ゴブリンには理解出来ないらしいな
658 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:14:28.08 ID:r+XipyqS.net] 6メガじゃなくて64メガだった こんなバカの相手をしてる俺って
659 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:20:44.44 ID:vxNioHuU.net] そこまでいうなら確認コードかいてみせろよ。 実行はしてやるから。 > 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら > その証明プログラムを書くなんて簡単な事だよ 簡単な事なんだろ。
660 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:25:20.13 ID:r+XipyqS.net] だいたい>>627 のコードはVCじゃコンパイルさえ出来ないし GCC拡張だっけかこういうの > WNDCLASS wclass = { > .style = CS_HREDRAW | CS_VREDRAW, まずはお前が試した環境(OS、コンパイラ)を書けよ 64メガブロックごとのVirtualAllocで俺が言ってるような現象が起こるわけないけどな てか、こういう規格外コード書くなよ
661 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:26:47.70 ID:rWlIZ3EB.net] それはですね このスレと関係無い別の言語なんです
662 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:28:40.57 ID:vxNioHuU.net] Xp64で64bitアプリで実行 (ページファイル枯渇のメッセージがシステムトレイに出た) 1816 60 10000 Not enough quota is available to process this command. やはりERROR_NOT_ENOUGH_MEMORYは出ませんなあ 出るわけないけど
663 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:36:26.67 ID:r+XipyqS.net] 試したいならな>>627 みたいなアプローチじゃだめだ プログラムを2作って1つはメモリをバカみたく確保しまくるやつ それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの ブロックを確保したり解放したりリークしたりする もう一つは普通のシンプルなWindowsアプリで定期的(常識的なサイクルの範囲で) にPostMessageを行う 間違っても > while (PostMessage(hWnd, WM_NULL, 0, 0)) はやっちゃだめだぞ
664 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:38:12.36 ID:vxNioHuU.net] >>660 > GCC拡張だっけかこういうの C99だよ。知らないの? ぷぷっ VS2012から使えるんじゃないかな。 2012はもう捨てたからあやふやだけど、2013では使える。 ゴブリンはCとC++の区別がつけられないようだ おかしなレイヤが挟まるとイヤだから、直に叩けるCで確認するに決まってるだろ
665 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:41:11.32 ID:vxNioHuU.net] >>663 それがuser32のPostMessageにどのように影響を及ぼすんだ? user32は別プロセスからは完全に切り離されてるんだぞ。Win16じゃあるまいし。 別プロセスの影響を受けるのは「VirtualAllocでのメモリ確保」
666 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:41:26.83 ID:r+XipyqS.net] は?C99?知らんかったわ よっぽどの事がなければCなんてもう使わないし てかここC++スレじゃなかったっけ?
667 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:43:37.14 ID:ZvFHDsOW.net] まだやってたのか? 今度は本質と関係ない攻撃までして本当必死だなお前はw ID:rWlIZ3EBも早く証明しろよできるんだろ?
668 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:44:41.23 ID:Evsn43pT.net] / ̄\ | | \_/ | __ ┴´ ``ヽ /::::::::::|:::::: `ヽ てか、こういう規格外コード書くなよ /:::\::::::::<● > `ヽ (( / <●>::::::::::⌒ ) | ⌒(_人__) ノ | | ヽ )vvノ: / ノノ ヽ (__ン 人 人 \ /
669 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:47:27.18 ID:rWlIZ3EB.net] >>667 はて何か証明しないといけないことが有っただろうか? ちなみにC99 designated initializerはVisual C++ 2013からだな
670 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:47:40.34 ID:r+XipyqS.net] なんとC++には「おかしなレイヤが挟まる」とか信じてるオカルト野郎だったか >>665 64メガ単位のVirtualAllocじゃ俺の言ってる現象の確認になんてならないということは理解したか? それにこれwwwは直したか > while (PostMessage(hWnd, WM_NULL, 0, 0))
671 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:49:15.63 ID:cll589HH.net] プラットフォームの知識なんてどうでもいいじゃん♪
672 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:57:33.08 ID:rWlIZ3EB.net] おかしなレイヤはともかく、C++スレで「Cに決まってるだろ」の後出しはマヌケ過ぎる
673 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 23:00:37.18 ID:vxNioHuU.net] >>663 > プログラムを2作って1つはメモリをバカみたく確保しまくるやつ > それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの > ブロックを確保したり解放したりリークしたりする このバカはメモリ管理が階層化されている事を知らないのだろうか? Win32サブシステムではメモリ管理はkernel32が担当し、ntdllから VirtualAllocで切り出したメモリブロックを小分けにしてアプリに 渡すが、kernel32はアプリのプロセス空間にロードされているので、 > それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの > ブロックを確保したり解放したりリークしたりする こんな事しても他のプロセスにはなんら影響を与えない。 はあ、こんな初歩的な事すら知らないとは。絶句するしかないな。
674 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 23:06:42.15 ID:vxNioHuU.net] >>666 >よっぽどの事がなければCなんてもう使わないし > newとかmallocが失敗するようになる前にそうなる。 mallocをC++でも使うのか? そりゃ使えるけど… ぷぷぷっ >>672 > おかしなレイヤはともかく、C++スレで「Cに決まってるだろ」の後出しはマヌケ過ぎる アスペは引っ込んでいようね。 codepad.org/NOUfjFJY C, pasted 4 hours ago:
675 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 23:08:59.56 ID:rWlIZ3EB.net] >>674 知ってるぞ。コッソリ言語をCにしてたんだろ まさにアスペの典型的行動だよな
676 名前:デフォルトの名無しさん [2016/02/11(木) 23:11:08.81 ID:IhmK9YPs.net] sendmessage関数の使い方について教えて下さい。 自作システムからとあるシステムをsendmessage関数を使用して自動操作したいと考えています。 環境はVisualStudioのC++系です。 質問@ sendmessage関数にて「ctrl + A」を送信するコードをご教授下さい。 現状以下になるか?と想定しています。 SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0); SendMessage(wh , WM_KEYDOWN , *Aに相当する何か* , 0); SendMessage(wh, WM_KEYUP, VK_CONTROL, 0); SendMessage(wh, WM_KEYUP, *Aに相当する何か*, 0); *Aに相当する何か*を教えて下さい。 また*Aに相当する何か*のコードを調べる方法も教えて下さい。 そもそもこのコーディングであっていますか? 質問Aその他の自走操作関数について SendMessage、PostMessage 以外に自動メッセージを送信する関数はありますか?
677 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 23:16:23.86 ID:vxNioHuU.net] >>663 既にヒントは出してるのに > プログラムを2作って1つはメモリをバカみたく確保しまくるやつ > それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの > ブロックを確保したり解放したりリークしたりする 32bitアプリじゃどんなに頑張っても2G弱しかメモリ取れなくて、 お前のいってる状況にはならないわけだ。 > XPだったと思うけどもしかしたらWindows2000だったかも知れん と言ってるわけなので、普及してなかったXp64じゃないだろうし。 > もう一つは普通のシンプルなWindowsアプリで定期的(常識的なサイクルの範囲で) > にPostMessageを行う > 間違っても > > while (PostMessage(hWnd, WM_NULL, 0, 0)) > はやっちゃだめだぞ これも合理的な意味がない。 ゴブリンなみの知能しかないらしいな
678 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 23:25:45.55 ID:vxNioHuU.net] >>676 全部Microsoftのサイトで解説されてる https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms646280(v=vs.85).aspx ここのwParam The virtual-key code of the nonsystem key. See Virtual-Key Codes. の「Virtual-Key Codes」でリンクされてる https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd375731(v=vs.85).aspx で解説されてる 日本語版は必要なリンクが無く、「載ってねーぞ」となる場合が多い
679 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 23:31:45.37 ID:rWlIZ3EB.net] >>670 >それにこれwwwは直したか >> while (PostMessage(hWnd, WM_NULL, 0, 0)) それこそが160レスも前から>>510 が依怙地に心の拠り所としているものなのに… おまえ:以前メモリ不足でエラーになった ↓ B:PostMessage呼び出し過ぎに決まってる ↓ おまえ:いやそうじゃなくてメモリ不足 ↓ B:PostMessage呼び出し過ぎ! PostMessage呼び出し過ぎ! ←ここで100以上のレスを消費
680 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 00:03:21.60 ID:Ljz6MKRP.net] 最近片山がコテハン隠してお忍びで暴れてると聞いてやってきました すごいふんいきですね
681 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 00:09:39.46 ID:fLx6I9W4.net] ゆっくりしていってね! But I, being poor, have only my dreams I have spread my dreams under your feet Tread softly because you tread on my dreams
682 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 00:40:10.02 ID:dKyYxY1Q.net] ID:r+XipyqS 簡単にかけるんだろ。実行してやるからとっとと書けよ。
683 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 01:00:35.33 ID:tA3EE8V1.net] 全く理解できない ID:r+XipyqS PostMessageが落ちる状況をワイの監視プログラムで乗り切った ID:vxNioHuU いや、そんな状況ありえんだろ。PostMessageは仕様通りの動きしかしない。 でいいのかな? ID:rWlIZ3EB ←んで、こいつは誰?
684 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 02:07:27.50 ID:Ly2MKnK4.net] >>679 例えスリープしてキューの消費を待とうがエラーを返すことはないぞ つーか確認した やっぱりお前も相当に頭悪いな
685 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 02:08:12.54 ID:Ly2MKnK4.net] >>683 変なやつを庇っちゃって後に引けなくなったアホだよw
686 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 02:11:51.19 ID:Ly2MKnK4.net] >>651 お前が指摘してる事ってあらゆることが全て的外れ VirtualAllocじゃ1バイトで失敗するまでループしても結果は同じ それよりお前の自作の処刑プログラムを俺に実行してみてくんない?w 超興味あるw
687 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 02:20:56.95 ID:A6+sqZJr.net] 君たち、C++の話をしろ PostMessage やら SendMessage やらの話は↓こちらでどうぞ。 Win32API質問箱 Build122 peace.2ch.net/test/read.cgi/tech/1451988219/
688 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 06:54:45.97 ID:dKyYxY1Q.net] >>683 ID:r+XipyqS PostMessageは低メモリ下でFAILする ワイの監視プログラムはそれを乗り切った ID:vxNioHuU いや、そんな状況ありえんだろ。 PostMessageがFAILするのはキューがあふれたから。(あふれた原因は当然、取り出してないから) >ID:rWlIZ3EB ←んで、こいつは誰? 触っちゃいけないアスペ
689 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 08:02:11.03 ID:W1VJFYp+.net] >>683 仕様上は発明家ID:r+XipyqSが10年前に見た挙動が 起こりえないとは書かれてないぞ ID:r+XipyqS PostMessageが落ちる状況をワイの監視プログラムで乗り切った。PostMessageは仕様通り。 ID:vxNioHuU いや、そんな状況ありえんだろ。PostMessageがFAILするのはキューがあふれたからに決まってる。ボクのPCで確認したもん。
690 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 08:47:36.66 ID:hlhHAQgj.net] >>689 > 仕様上は発明家ID:r+XipyqSが10年前に見た挙動が > 起こりえないとは書かれてないぞ 起こると言うなら、そのエラーコードと回避方法を書けばいいだけ まあ、書けない理由があるんだろ? 妄想で、引っ込みつかなくなったから とかね (ニヤニヤ
691 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 09:52:01.35 ID:2s3eP2W9.net] そもそもPostMessageが低メモリによる動作不良を 検出できるなんてドキュメントなんて無いのに それがまかり通るとか思ってること自体が 間違ってるってことに、なんで誰も指摘しないの? ググってこのスレがヒットして 一般論だと勘違いが増えないことを 祈るのみだ。
692 名前:デフォルトの名無しさん [2016/02/12(金) 10:01:16.83 ID:dKyYxY1Q.net] 再三指摘してるけどね。 「オレは見た」「お前の再現プログラムはインチキ」「証明プログラムは簡単に書ける」 「VirtualAllocで一気に取ると再現しない、もっと小さいサイズ(ランダム)でalloc/freeすべし」 トドメが「7じゃ変わってるかも」
693 名前:デフォルトの名無しさん [2016/02/12(金) 10:48:49.14 ID:guNonXlH.net] template<char N> struct hoge{};は可能ですか c++11と03両方の場合教えてください
694 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 10:51:40.09 ID:YW9gyZkt.net] >>691 このスレはズレたことを真顔で言い合うスレです 悪い意味での裸の王様はこのスレにたくさんおり 良い意味での子供はこのスレにはほとんどいません 誰もがバカの目には見えない服を着て戦っています
695 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 11:30:47.56 ID:+xxm9BEP.net] >>693 可能、とは?
696 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 12:09:40.44 ID:nrgTBvRP.net] >>693 コンパイルが通るか否かで言ったらどっちでも通る。 ただ、使う時に hoge<'A'> foo; とか書くことになるだろうから一体何を意味してんだか分からんだろうけど。
697 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 12:50:54.13 ID:1YUHUC0D.net] >>696 わかるよ、顔のAAでしょ?
698 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 13:03:22.47 ID:HGC0xuFL.net] まだゴミどもがほざき続けてて笑えるwww 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』 どうしてこんな単純な当たり前な主張に必死になってケチをつけ続けるんでしょうか?www そんな超絶低能キチガイだから一日中ここに張り付いて戯言垂れ流していられるんだな 羨ましい限りだよ
699 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 13:11:03.95 ID:t3iUoxu4.net] 物理メモリーがたりなくなっても仮想メモリーをつかうから重くなることはあっても失敗することは無いだろ。
700 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 13:14:35.06 ID:hlhHAQgj.net] >>698 > 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』 > どうしてこんな単純な当たり前な主張に必死になってケチをつけ続けるんでしょうか?www 具体的に何も書かないチキン乙 あっ、書けないんでしたっけ? w > そんな超絶低能キチガイだから一日中ここに張り付いて戯言垂れ流していられるんだな ブーメラン乙 > 羨ましい限りだよ 羨ましくはないけど w
701 名前:デフォルトの名無しさん [2016/02/12(金) 14:27:30.45 ID:dKyYxY1Q.net] >>698 とっととPostMessageがERROR_NOT_ENOUGH_MEMORYでFAILする検証プログラムかけよ。 簡単なんだろ。実行はしてやるよ。
702 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 14:36:31.54 ID:dKyYxY1Q.net] 32ビットアプリ一つが張り切ってメモリ食い尽くしても高々2G 10年前でもディスクは数十Gはあったはずだから、ページファイル使い尽くすなんて状況は発生しないよな
703 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 14:48:14.25 ID:mCcpVV1b.net] つーかメモリ不足で該当プロセスが落ちるならさすがにOSのログにどれがどうして落ちたか位は残るような。
704 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:29:07.28 ID:XKRoTCqu.net] >>702 ページファイルの最大値指定してないの?
705 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:30:03.82 ID:nrgTBvRP.net] KP41「どやっ」
706 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:46:32.55 ID:Ly2MKnK4.net] >>700 そういう言い訳良いから早くPostMessageを低メモリで失敗させてくれませんかね?
707 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:47:00.71 ID:Ly2MKnK4.net] おっと間違えた>>698 な
708 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:49:33.84 ID:hlhHAQgj.net] >>702 実メモリー2GBでページング領域に数十GBも割り当てるとかバカすぎだろ… 今時もっさりするのが嫌で実メモリー4〜8GBとか積んで仮想記憶切る奴もいるぐらいなのに
709 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:53:58.60 ID:Ly2MKnK4.net] もちろん動かすのは処刑プログラムでもいいよ(ニッコリ)
710 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:56:02.47 ID:dKyYxY1Q.net] >>704 NT4位までは頑張って色々設定してた気がする 2000以降はほとんどデフォルトだね
711 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:58:55.28 ID:dKyYxY1Q.net] >>708 言いがかりつける前によく読みたまえ。
712 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 16:01:04.55 ID:mCcpVV1b.net] 6G積んだWin8.1 64bitで使用メモリ3G超え位で妙に重くなるからリソースモニターで確認したらスワップファイル読み書きしてやがる。 保険として書き込みするのは許せるとしてがっつり読み込みまでするのはどういう管理しているんだと。 ノートでhddだからreadyboostしたらけっこう軽くなった。
713 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 16:03:16.55 ID:dKyYxY1Q.net] >>708 あと、仮想記憶切ってモッサリ解消って言うのは素人のおバカ設定だから プロのソフトエンジニアがそんな事言ってたら笑われるぞ
714 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 16:24:44.45 ID:Ly2MKnK4.net] >>713 へ?何いってんの? WinはRAMが十分にあってもすぐswapoutするから 抑制するために切るのって運用側でも定石だぞ?
715 名前:デフォルトの名無しさん [2016/02/12(金) 16:54:06.96 ID:dKyYxY1Q.net] >>714 素人ブロガーのヨタ記事を信用しちゃたなんちゃってシス管か ベンチマークも載せてないヨタ記事信用しちゃダメ https://tweakhound.com/2011/10/10/the-windows-7-pagefile-and-running-without-one/ Conclusion After 20 or so hours of prep and roughly 32 hours of benchmarking there was no difference between having a pagefile and not. 自分で仮想記憶切ったときは非アクティブで放置してたアプリをアクティブにするスピードだけは向上したな。
716 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 17:00:52.86 ID:Ly2MKnK4.net] >>715 必死にググって探してきたの? 残念だったね https://support.microsoft.com/ja-jp/kb/2659143
717 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 17:04:24.52 ID:Ly2MKnK4.net] 他人を罵倒した挙句クライアントアプリの運用例しか出さないとか なにここ処刑会場?
718 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 17:06:33.50 ID:A6+sqZJr.net] 君たち、C++の話をしろ PostMessage やら SendMessage やらの話は↓こちらでどうぞ。 Win32API質問箱 Build122 peace.2ch.net/test/read.cgi/tech/1451988219/ スワップファイルの挙動の話は↓こちらでどうぞ。 Windows peace.2ch.net/win/
719 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 17:06:44.62 ID:hlhHAQgj.net] >>711 > 言いがかりつける前によく読みたまえ。 ああ1プロセスの話をしてるのか そりゃすまん >>713 トラブルの元って言うだけだろ それを理解してやるなら問題ないんじゃね? 自分はやろうとは思わないけど
720 名前:デフォルトの名無しさん [2016/02/12(金) 17:32:48.50 ID:dKyYxY1Q.net] >>716 日本語の解説なのに読めないの? そのページの意味わかる? 哀れ過ぎる。
721 名前:デフォルトの名無しさん [2016/02/12(金) 17:36:57.96 ID:dKyYxY1Q.net] >>719 ベンチマークも無しにそう言う設定マニュアル作成できるってのが信じられんわ インハウスでベンチマーク取ってて特定の運用形態下での設定ならありかも知れんが 定石って言うなら公開されてる根拠出すべきだね ID:Ly2MKnK4
722 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 17:51:04.63 ID:Ly2MKnK4.net] >>721 まずこの記事な、主となるベンチをプロセス作成直後に実行してて 挙句にバックグラウンドアプリのページアウト後でも十分スコアが出る、 専有型のベンチしか使ってない つまり、あからさまにページインアウトによるパフォーマンス低下を避けた方法でスコアを出し、 ページファイル無しと変わらないと言ってるので、参考にならない 正直こんなあからさまな酷い記事よく書けると思うよ これ読んで技術者気取っちゃうお前さんは自業自得だけど
723 名前:デフォルトの名無しさん [2016/02/12(金) 18:13:44.60 ID:dKyYxY1Q.net] new/mallocが失敗するのが謎だったけど、ID:HGC0xuFLのお笑い劇場の 舞台裏が見えてきたわ ・素人ブロガーのヨタ記事を鵜呑みにしてページファイルをオフにしていた ・だからnew/mallocで失敗する ・メモリが取れない状態で描画要求がくる。 ・メッセージループのdefwndprocを介して呼び出されるgdiモジュールがメモリ取れなくなる ・メッセージループが回らなくなる、あるいは再描画要求が繰り返される ・メッセージキューがあふれる ・PostMessageが失敗する ID:HGC0xuFLはここから、 > Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから という、おバカな結論に、至ってしまった。 C++のランタイムメモリアロケーターはOSから確保した分を使い切ってからエラーになるので、 メッセージキューがあふれる方が先だったのだろう いやー、笑わせてくれたなあ あっ、処刑プログラムの発動は引き続き待ってるから 爆笑
724 名前:デフォルトの名無しさん [2016/02/12(金) 18:15:44.63 ID:dKyYxY1Q.net] >>722 定石っての根拠になる公開記事は?
725 名前:デフォルトの名無しさん [2016/02/12(金) 18:20:33.55 ID:dKyYxY1Q.net] >>722 非アクティブなアプリに対する有効性は認めた上で読むんだから問題無いね で、定石って言ってる根拠は?
726 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 18:28:01.77 ID:hlhHAQgj.net] >>721 > ベンチマークも無しにそう言う設定マニュアル作成できるってのが信じられんわ 設定マニュアル? なんの言いがかりですか? w 俺はそうやってる奴がいるって書いてるだけなんだから、ちょっと落ち着け そもそも > 非アクティブで放置してたアプリをアクティブにするスピードだけは向上した って言う効果はあるんだろ? それをもっさり解消って言ってるだけだと思うし、何を必死に突っかかってるのかよくわからん あと >>723 みたいな根拠のない憶測でレスするのは止めた方がいいし、ページングファイルを食い潰さなくても new/malloc が失敗することはある
727 名前:デフォルトの名無しさん [2016/02/12(金) 18:28:21.04 ID:dKyYxY1Q.net] >>716 これがページファイルオフでの性能向上とどう関係してるのか説明しろや
728 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 19:01:34.69 ID:Ly2MKnK4.net] >>724 定石かどうかを証明するのは難しいな 権威的なものでいいなら軽く検索しただけでも www.dell.com/downloads/global/products/pedge/en/poweredge-m610-power-competitive-whitpaper.pdf それとパフォーマンス低下についてはMS公式にもある https://support.microsoft.com/en-us/kb/918483 ちょっと検証コード書いてみるか
729 名前:デフォルトの名無しさん [2016/02/12(金) 19:22:04.81 ID:dKyYxY1Q.net] >>728 サーバーのページファイルオフなんてありえねー メモリ枯渇で即落ちしてもオケなんて想像もつかんわ これが定石ってどんな集団だよ
730 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 19:58:57.38 ID:NIVdBMY9.net] スワップなしでメモリ枯渇 ↓ メモリ不足ですね増設しましょう ↓ ボッタクリ価格でメモリ増設まいどあり
731 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 20:06:37.11 ID:W1VJFYp+.net] >>690 仕様上あり得るとされるものを現在の実装で本当に起こるのか再現させてみるなど時間の無駄 起こりうる前提で物事を考えなければならない まあ論理的思考が出来ない馬鹿にはちょっと難しかったな
732 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 20:20:51.50 ID:Ly2MKnK4.net] >>729 そらメモリ足らない環境でやったらただの馬鹿だろがw 足りてる状況で考えろよw
733 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 20:24:11.68 ID:hlhHAQgj.net] >>731 > 起こりうる前提で物事を考えなければならない その話と > Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから の状況を書く話は関件ないよね 妄想じゃないなら、エラーコードや対応策を書けるでしょ 本人忘れててもソースコードあれば思い出すのはわけないだろうし って論理的思考が出来れば容易に理解できると思うけど w
734 名前:デフォルトの名無しさん [2016/02/12(金) 20:25:50.67 ID:dKyYxY1Q.net] >>731 逃亡態勢にはいったようだが、 「起こりうる」ではなく、メモリ枯渇の前兆としてPostMessageがFAILするという、 ドキュメントに書かれていない主張をしてるんだから、 取り下げるか、立証する義務があるんだよ。わかるかな、中学生。
735 名前:デフォルトの名無しさん [2016/02/12(金) 20:32:26.84 ID:ux6Bc/zl.net] このすれはなんのすれですか?
736 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 20:34:25.94 ID:isgeeUAQ.net] >>735 スレタイもテンプレも読めないカスはすっこんでろや
737 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 20:46:57.18 ID:bmljtWY7.net] いや全くだ。プラットフォームの話題なんてつまらないしいい加減にしてもらいたい。
738 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:03:53.69 ID:SFFFzIuJ.net] だれか>>589 の話題に触れてあげて!!
739 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:11:03.24 ID:HGC0xuFL.net] >>734 はあ?お前やっぱりバカの極致だな リファレンスのどこに低メモリ化でPostMessageが失敗することはないと書かれてるんだよ 失敗した時はERROR_NOT_ENOUGH_QUOTAになるって書いてるだけだぞ QUOTAの意味分かるか? あと、お前のコードクレクレに付き合う気はないからw そんな暇人じゃないんでね たとえちょっとやそっとのテストで低メモリ下でPostMessageが失敗しなくても 何の証明にもならないということが分からねーんだろうなこの使えないバカは というか何で『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』 という単純な見解にここまで粘着してケチ付けるのかね?www
740 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:15:11.22 ID:HGC0xuFL.net] まあ >while (PostMessage(hWnd, WM_NULL, 0, 0)); とかやって「証明終了!」とかいうバカの相手するだけ無駄だわ
741 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:18:19.41 ID:PeChAo5O.net] おめえがニート満喫してクソ暇なくせに超忙しいとか普通の人間なら恥ずかしくて憤死するレベルの嘘ついてコード書けずに逃げ回ってるからケチつけられてるんだといい加減気づけ?な?
742 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:21:30.22 ID:HGC0xuFL.net] バカどもが顔真っ赤にして自己紹介 本当に嘘なら嬉しいんだけどなwww
743 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:22:41.29 ID:HGC0xuFL.net] てかこんなとこでバカの相手してる場合じゃねえ>俺
744 名前:デフォルトの名無しさん [2016/02/12(金) 21:27:07.73 ID:dKyYxY1Q.net] >>739 お前の主張は > Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから だからね。 「メモリアロケーションに失敗する前」 ま、お笑い劇場の舞台裏は全部解明出来てるから逃げ出しても良いけどね。
745 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:54:52.61 ID:PeChAo5O.net] そろそろ釣れた釣れた言い出す頃合いかな?
746 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:06:57.63 ID:lbf6swjk.net] この話題、いつまで引っ張るんだろう
747 名前:デフォルトの名無しさん [2016/02/12(金) 22:15:29.87 ID:dKyYxY1Q.net] PostMessageはメモリアロケーション失敗の前兆として使える。キリッ って、職場でドヤ顔してたんだろうな。 当時を憶えてる同僚とかいたらどうするんだ?
748 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:16:02.44 ID:isgeeUAQ.net] HGC0xuFLがコードを提示するまで
749 名前:デフォルトの名無しさん [2016/02/12(金) 22:19:50.35 ID:dKyYxY1Q.net] 何年も前のいやな思い出で、それを上回るいやな思い出を作ってしまったバカが哀れでならない。 早期に逃走しとけばよかったのに。
750 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:38:34.72 ID:hlhHAQgj.net] >>748 永遠に無理でしょ
751 名前:デフォルトの名無しさん [2016/02/12(金) 22:38:45.21 ID:ogWwf7PC.net] >>736 PostMessageはC++だったんですね。そうとはきづかづごめんなさい
752 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:43:03.91 ID:HGC0xuFL.net] ほんとにここは精神がねじれた低能の見本市だな 「PostMessageはメモリアロケーション失敗の前兆として使える」なんて俺は言ってもいないし 人の言ってることを曲解しては悦に入るバカどもの巣窟
753 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:48:37.57 ID:HGC0xuFL.net] こういう多くのアプリが全滅してエクスプローラさえ死んじゃう状況でも 生き残らななきゃいけないソフト書いたことがないのが丸わかりのやつが 何をほざこうが片腹痛いだけだからw
754 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:55:13.94 ID:HGC0xuFL.net] やっぱりあいつは死に至らせて正解だと思えてなごむわw
755 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:27:15.72 ID:W1VJFYp+.net] やはり自然言語の理解力が欠落していると>>733 や>>734 のようなとんちんかんなレスが続くんだな レファレンスを100回読み直せ
756 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:38:11.01 ID:W1VJFYp+.net] ここまで知能が低いと読んでもわからないだろうから一応補足しておくか >>733 リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能 >>734 「メモリ不足でエラーにならないとは書いてない」と「メモリ不足エラーが有るとは書かれていない」は矛盾しないしどちらも間違ってはいない ただ「メモリ不足エラーはあり得ない」というのは間違い
757 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:39:06.98 ID:HGC0xuFL.net] だいたいね。極限的な状況ではAPIが失敗することがあるなんて当たり前のことだし PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る そうしてるうちにメモリーリーク犯人のプロセスは死ぬから目的は達成できるというわけ
758 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:03:32.55 ID:MUp0G3Pc.net] >極限的な状況ではAPIが失敗することがあるなんて当たり前のことだし 抽象的過ぎ 当たり前なら何故具体例が一つもないのか? 被告の訴えを却下します
759 名前:デフォルトの名無しさん [2016/02/13(土) 00:24:37.37 ID:zKS/hYh5.net] メモリ不足への対応の話題が続いた後、バカ颯爽と登場 471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから その辺に対応するのがコツ
760 名前:デフォルトの名無しさん [2016/02/13(土) 00:46:48.91 ID:zKS/hYh5.net] APIのエラーコードをなんか取得しないのがあたり前 大爆笑
761 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:50:14.82 ID:rkbIirC9.net] >>756 > リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能 え“っ、マジで言ってる? >>471 には > その辺に対応するのがコツ って書いてあるんだが w まあご自慢の「対応」が… >>757 > PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ > そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る では恥ずかしくて書けんわな w 結局 >>512 で終了だったんじゃん
762 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:55:31.18 ID:CApp8RWm.net] いい加減 スレ違いの荒らし共は去れ
763 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:58:17.06 ID:rkbIirC9.net] >>760 >>509 で、 > PostMessageの戻り値を見たこともないゴミは黙ってろって とか言ってたから、そこは PostMessage の戻り値じゃなくて GetLastError だろ って突っ込もうと思ったが、まさかのマジだったとは… w ERROR_NOT_ENOUGH_QUOTA なんて見たこともなかったんだろうな
764 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 01:34:04.31 ID:u45lvCeq.net] 実務じゃ使いものにならないゴミクズが何をほざこうか俺の作った監視プログラムは目的を達成したからw こういう状況じゃGetLastErrorなんて蛇足なんだよこのクソバカ
765 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 01:49:46.40 ID:u45lvCeq.net] パフォーマンスカウンタを読みだすスレッドのRegQueryValueExとか その結果をメインスレッドに伝えるためのPostMessage。ログを出力するための ファイル操作とか極限的なリソース不足状態ではどこでどんなエラーが起ころうが 文句は言えない。俺の経験ではPostMessageが最初にエラーになったというだけだよ。 違うバージョンのOSでもそうなるかなんて知らないし、GetLastErrorなんてもっとどうでもいい。
766 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 01:57:26.09 ID:KZpZDJLQ.net] PostMessage使わなきゃいーじゃんwwww
767 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 02:01:11.61 ID:u45lvCeq.net] PostMessage使わなくたってそのうち他のAPIでエラーになるのは目に見えてるから 何の解決にもならないね
768 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 02:12:00.43 ID:u45lvCeq.net] 極限的なリソース不足状態ではソフトがまともに機能できるわけはないんだよ そういう状況で可能なのは自分が死なないように極力耐えること バカが作った穀潰しソフトが動いている以上もうどうしようもない そのソフトを安易にkillできないという苦しい状況だったし でもそのうちそのバカソフトは自滅するから「このバカソフトがメモリを食いつぶして 他のプロセスまで巻き込んで自滅しました」って報告ができたというわけ
769 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 02:18:24.92 ID:mOEZHanV.net] C++で自分で直接メモリをアロックすんにゃ。 そういうのはライブラリに任せておけばいい。 メモリ確保してる処理は把握してなるべく使うな。 ほとんどスタックで片つくんだから。
770 名前:デフォルトの名無しさん [2016/02/13(土) 03:45:26.51 ID:zKS/hYh5.net] >>763 それはね、日本語版msdnには「エラーを取得するには関数を使います」しか書かれてないからだよ 大爆笑
771 名前:デフォルトの名無しさん [2016/02/13(土) 03:50:36.67 ID:zKS/hYh5.net] メモリアロケーションよりPostMessageがERROR_NOT_ENOUGH_QUOTAでFAILする理由なんて思いつきもしないんだろうな。 無い知恵振り絞って辿りついたのがPostMessageで診断 大爆笑 哀れ過ぎる
772 名前:デフォルトの名無しさん [2016/02/13(土) 03:52:23.57 ID:zKS/hYh5.net] 実務て使うマシンを素人ブロガーの戯言信じてページファイルオフにしちゃダメだぞ。
773 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:05:49.98 ID:rkbIirC9.net] >>766 それな〜 プロセス数の上限が読めないからいちいちメモリー確保してるみたいだし(⇒>>493 )、余計な苦労を明後日の方法で解決してドヤってるだけやね まあ、そもそもこの監視ソフトとやらが本当に必要だったかどうかも怪しいみたいだけど w
774 名前:デフォルトの名無しさん [2016/02/13(土) 08:07:18.11 ID:GG2kKfuP.net] 【SendMessage】関数【PostMessage】関数についてご教授下さい。 開発中のシステムからメモ帳のウィンドウハンドル(入力ウィンドウ)を取得し、 SendMessageやPostMessageを行っています。 PostMessageは成功するのですが、SendMessageが失敗してしまます。 なぜ、SendMessageが失敗するのか、原因をご教授下さい。 コードは以下の通りです。 ------------------------------- HWND wh = FindWindow(nullptr, p);//pは”無題 - メモ帳”です 本体のウィンドウハンドルを取得 wh = GetWindow(wh,5);//入力欄のウィンドウハンドルを取得 SendMessage(wh, WM_KEYDOWN, 'A', 0); PostMessage(wh, WM_KEYDOWN, 'B', 0); ------------------------------- このコードを実行すると b のみ出力され a が出力されません。 なぜでしょうか?環境面など悪さしてますか?それともコーディング間違いでしょうか? 同期処理を実現したいのでSendMessageが使いたいのです。 環境は以下です。 -------------- Windows7 Visual Studio C++ cli --------------
775 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:10:50.39 ID:tl7vIPkr.net] >>765 結局、「コツ」でもなんでもなかったと。
776 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:23:05.67 ID:HsLEl+zU.net] >>774 upはどうした? win32apiすれにgo
777 名前:デフォルトの名無しさん [2016/02/13(土) 08:25:44.61 ID:GG2kKfuP.net] >>776 もちろんupも入れてみたんですが、やはりダメでした。 何が原因なんですかね・・・原因がわかれば納得できるのでpost使おうと思うのですが
778 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:19:28.60 ID:rkbIirC9.net] >>774 取り合えず PostMessage の戻り値と戻値が 0 なら GetLastError の戻り値を確認することからかな 間違っても… > PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ なんてタワケの言うこと信じちゃダメだぞ w
779 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:31:02.81 ID:zKS/hYh5.net] >>766 俺に言わせるとそれほど難しいことじゃない キリッ > PostMessage使わなきゃいーじゃんwwww それを外しちゃダメだよ ゴミカスが無い知恵振り絞って考え付いたと思い込んでる、メモリ不足対策のキモなんだから。 >>471 > Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ > いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない > Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから > その辺に対応するのがコツ > 実務じゃ使いものにならないゴミクズが何をほざこうか俺の作った監視プログラムは目的を達成したからw まぐれで動いたゴミクズを自慢するド素人 憐れ codepad.org/CEp9Bp6L PostMessageの戻り値見ても、メモリ不足対策にならないんだけど。 w 1816 3929 9999 unknown error PostMessag=1 malloc=00000000 <==== PostMessage成功するけど、malloc出来ない PostMessag=0 malloc=01EF0048 <==== PostMessage失敗なのに、malloc出来ちゃう > 俺に言わせるとそれほど難しいことじゃない > 俺に言わせるとそれほど難しいことじゃない
780 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:31:11.38 ID:ZcBYdk8a.net] こちらにどうぞ Win32API質問箱 Build122 peace.2ch.net/test/read.cgi/tech/1451988219/
781 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:18:33.52 ID:e6sIQV8m.net] Visual Studio 2015 Update 2は変数テンプレートとUTF-8指定のオプションが付くようだ
782 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:27:59.74 ID:e6sIQV8m.net] is_function<void()&>::valueの値が間違っているバグのレポートを上げていたが直っている模様
783 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:57:04.37 ID:u45lvCeq.net] PostMessageの件 今朝ちょっと暇があったからWindows7 64bitで試してみたら簡単に再現したわ10分も掛からなかった GetLastErrorの戻り値は1816(ERROR_NOT_ENOUGH_QUOTA )だ
784 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 11:34:57.57 ID:MUp0G3Pc.net] で、再現コードは?
785 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 11:36:27.18 ID:mOEZHanV.net] C++14はまだかー。
786 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:03:30.93 ID:u45lvCeq.net] >>784 コードくれくれうざい やり方は>>663 に書いた 大事なのはメモリを真に使い果たす悪役プログラムを作ることだよ >>627 みたいなやり方じゃ全然話にならない そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ 犠牲者の方はシンプルなやつでいい
787 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:10:30.02 ID:Zu4nB+6U.net] そういう極悪プログラムを作るのにはスキルがいるし 10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ .
788 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:14:02.97 ID:MUp0G3Pc.net] 簡単に再現できること 当たり前であることと矛盾しますね また複雑である場合他の部分の副作用である可能性は否定できません 証明義務のあるu45lvCeqに再度コードの提示を求めます
789 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:18:11.17 ID:zKS/hYh5.net] >>783 >>783 > GetLastErrorの戻り値は1816(ERROR_NOT_ENOUGH_QUOTA )だ QUOTAの意味分かるか? 爆笑 >>786 > >>627 みたいなやり方じゃ全然話にならない プログラムがどうやって動いているか、原理を理解してないバカ。www codepad.org/CEp9Bp6L PostMessageの戻り値見ても、メモリ不足対策にならないんだけど。 w 1816 3929 9999 unknown error PostMessag=1 malloc=00000000 <==== PostMessage成功するけど、malloc出来ない PostMessag=0 malloc=01EF0048 <==== PostMessage失敗なのに、malloc出来ちゃう 俺に言わせるとそれほど難しいことじゃないんで、くれてやるよ。
790 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:26:08.81 ID:zKS/hYh5.net] >>786 俺に言わせるとそれほど難しいことじゃないんで、今回は特別に教えてやるよ。 W大爆笑 絶対に死んではいけないプログラムにウインドウ持たせるのは、絶望的にプログラミングセンスが無い。 お前、ホームレスに転職した方が良いぞ。
791 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:27:17.07 ID:rkbIirC9.net] >>786 > そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作 って >>513 > 低能が作った穀潰しゴミソフト の話だよね もう病院に駆け込んだ方がいいレベル w
792 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:50:15.26 ID:zKS/hYh5.net] >>786 なんか、応用の聞かない「メモリ不足対策」だね。 >>627 みたいな超簡単な悪役にも対応できないのか。 墓穴掘ってやがる。ゴミクズって本当にバカだな。
793 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 13:56:19.68 ID:7PDbXjKY.net] どうしてコテハンは慈演をつづけるの
794 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 13:59:03.92 ID:Th9NieDp.net] C言語の検索するとC++のことが出てきやがってマジで迷惑。 いい加減にしてほしい。
795 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 14:52:35.59 ID:e6sIQV8m.net] そんな794に訃報だ ハーブサッターはVisual C++がC99をサポートしない理由を訊かれて「しないからしない」的なアスペな回答をしている Cにしかない機能以外は対応するが、それ以外はCはC++のサブセットとしてC++を使えということだ
796 名前:デフォルトの名無しさん [2016/02/13(土) 15:12:53.44 ID:GG2kKfuP.net] >>774 >>776 >>777 >>778 ありがとうございます。 SendMessage(wh, WM_CHAR, 'A', 0); で出来ました。 つまり、SendMessage でWM_KEYDOWN は使えないということですね? 次のステップなのですが、 「右矢印キーを2回押す」や「ctrl+Sを押す」といった事は、 SendMessageで行えますか?PostMessageを使うしかないでしょうか? コード例以下です。 「右矢印キーを2回押す」 SendMessage(wh, WM_KEYUP, VK_RIGHT, 0); SendMessage(wh, WM_KEYUP, VK_RIGHT, 0); 「ctrl+Sを押す」 SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0); SendMessage(wh , WM_KEYDOWN , 'S' , 0); SendMessage(wh, WM_KEYUP, VK_CONTROL, 0); SendMessage(wh, WM_KEYUP, 'S', 0);
797 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 15:15:43.59 ID:jEq/NF/M.net] スレ違いをスルーせず中途半端に乗っかるからこうなる。誘導以外触れないほうがいい。
798 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 15:35:45.74 ID:QD8KbUeS.net] >>796 メモ帳立ち上げてkeybd_event()でやった方が早いぞ
799 名前:デフォルトの名無しさん [2016/02/13(土) 16:05:47.92 ID:GG2kKfuP.net] >>796 >>798 keybd_eventやSendInputは最前面ウィンドウに対する操作になってしまうので、 使えないです。 ※ウィンドウが最前面か否かに関わらず常に安定した操作を実現したいのです
800 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:09:11.77 ID:MXADxP3M.net] >>738 以後誰も>>589 にレスしてないのでレスすると 自分はあいぽんアプリ作りたくてXcode+Clang(とllvm gcc)使ってるよ ここはVCの独自仕様を嫌うコメが結構出るし、VCばっかりということはないはず 自分も以前はWin+VCばっかりだったけど、Clangやgccに移植していかに自分のコードが 独自仕様に頼ってたか思い知らされた・・・
801 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:36:13.24 ID:e6sIQV8m.net] >>589 そもそもコンパイラーを使っていない
802 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:50:22.29 ID:8c5F/b7w.net] C++erのスルースキルの無さは異常
803 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:13:39.59 ID:Th9NieDp.net] 馬鹿をV$に隔離するためには役立ってるんだからそこに触れるのは駄目。
804 名前:デフォルトの名無しさん [2016/02/13(土) 18:18:04.37 ID:UpZGp0t4.net] codepad.org/Vtcbp6N8 のコード、g++4.9.3でコンパイルすると main.o:main.cpp:(.rdata$.refptr._ZN4hogeILw65EE5valueE[.refptr._ZN4hogeILw65EE5valueE]+0x0): `hoge<(wchar_t)65>::value' に対する定義されていない参照です とエラーが出ます。 109行目をコメントアウトするとコンパイル出来ます。何故ですか
805 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:33:19.74 ID:mOEZHanV.net] >>804 あっさーとで落ちてるからなんかチョンボしてる。かな?
806 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:40:12.59 ID:jEq/NF/M.net] >>804 static const メンバ変数に初期化子をつけて宣言しても定義にはならないから。 面倒だが別途定義を書いておかないと、 const& に渡した場合などアドレスが必要になる ような使い方をした時点でそういうエラーが出ることがある。 9.4.2 [class.static.data] p3 https://www.google.co.jp/search?q=%22The+member+shall+still+be+defined%22&lr=lang_ja
807 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 19:52:01.47 ID:2d9oUeOe.net] えつ
808 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 20:26:47.13 ID:e6sIQV8m.net] const&はともかくアドレスを必要とする場合、 shallで要求されたことを満たしていないのでエラー等のメッセージを出す義務があるのではないだろうか 1.4 Implementation compliance p2
809 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 20:55:19.29 ID:ISK/9ZCR.net] 出ることがあると言うか、出さなきゃあかんよな。
810 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 22:00:43.12 ID:5ubtGtDT.net] そんなバカな......
811 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:02:32.46 ID:M72BiSZl.net] >>810 疑問があるなら率直に書きなさいな。
812 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:09:59.23 ID:rASW1SI1.net] アスペに「何かしゃべれよ」とか拷問過ぎるw
813 名前:デフォルトの名無しさん [2016/02/14(日) 00:26:17.27 ID:YtvhXGz3.net] 俺に言わせるとそれほど難しいことじゃない
814 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:35:43.88 ID:qwowkzgX.net] >>811 >>806 に書いてある >static const メンバ変数に初期化子をつけて宣言しても定義にはならない のことだよ。 クラステンプレートの場合は、クラス内宣言が定義になるんじゃないの?
815 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:41:08.95 ID:YtvhXGz3.net] 最新の規格書読んだこと無い素人は回答を控えるように 無理して回答する必要ないから
816 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 01:45:35.51 ID:Ssn6bioA.net] よし最新の企画を読んだ俺が答えてやろう クラスとクラステンプレートで宣言と定義に大差は無い template<typename T> struct a { constexpr static int N = 0; }; template<typename T> constexpr int a<T>::N;//アドレスを要求される場合必要 int main(){ f(&a<int>::N); }
817 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 02:03:22.21 ID:2H7lNMsF.net] ×:企画 ○:規格
818 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 02:17:54.69 ID:Ssn6bioA.net] 大丈夫だ。最新の規格も読んだのでぬかりはない だが規格よりドラフトN4567の3.2 One definition ruleの方が近い例が書かれている
819 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 05:43:49.28 ID:trZrfj/6.net] 最新の規格ももちろん重要だが、C++は変化が激しいので C++14でこうなった(規格引用)、C++11ではこうだった(規格引用)、 みたいに紹介してくれると余計に有難い。 広く普及してる開発環境が最新規格に追いついてるとは限らないしね。
820 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 07:43:32.58 ID:Ssn6bioA.net] 大丈夫だ。規格は全版揃えているからぬかりはない 規格は>806の通りで最初からこの仕様はある C++98『The member shall still be defined in a namespace scope if it is used in the program and the namespace scope definition』 この時点でif it is usedが何を意味するのか説明が漏れていて(次の段落を読むと意図は想像できたが)、 C++11『if it is odr-used (3.2) in the program and the namespace scope definition』 と「odr-used」と言う言葉が導入された。これがリンカーの仕事が必要となるような使い方を意味する。 N4567では3.2のサンプルコードでstatic const int変数を const int &f(const int &r); に渡してodr-used here, so a definition is requiredとコメントが書かれている
821 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 08:59:22.24 ID:IJ2u9HkZ.net] ああっ!出る!!出るぞ!!ぴゅっぴゅっ …ふぅ、また>>815 の顔にかけてしまった
822 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:01:29.21 ID:H3NWVMks.net] >>815 が規格票の解釈を間違えているとしたら誰が指摘するのか
823 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:20:05.11 ID:+WF+5Yyl.net] クラステンプレートのstatic const整数型データメンバの定義を外側に書いたことはないな。 大昔は enum 使ってたし。
824 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:22:40.71 ID:YtvhXGz3.net] 変更か多い箇所だから、単に要求しただけだ。 PostMessageでメモリ状況の診断するような素人が紛れ込むと混乱するからね。
825 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:30:57.56 ID:jQtJnDco.net] XpでSendMeassageしまくると超もたつくというのはあるけど PostMessageでメモリの使用状況調べるのは初耳だな
826 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 14:10:17.13 ID:jkMZu/bi.net] >>822 規格を読んだ他の人が指摘するだけ。何を心配してる? >>815 はわざわざ検証しやすいよう検索結果を示してるし、 N4567は誰でもダウンロードできるし、 メイヤー先生の本にも書いてあることだし。
827 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 17:53:52.82 ID:M72BiSZl.net] >>820 お疲れ様、プロの規格読みの人。
828 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:18:09.59 ID:YtvhXGz3.net] >>825 今週来てなかったのか? ド素人の>>471 からの暴れっぷりを楽しんでくれ。
829 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:27:29.02 ID:/+rigQ84.net] >>471 PostMessageの挙動ってメモリアロケーションと無関係では? だとしても、確認のためにPostMessageをうつのかな
830 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:40:15.29 ID:KVV6N47s.net] おいやめろ。蒸し返すな。気になるならWin32APIスレに行け。
831 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:55:30.00 ID:2GOq4jA1.net] わざとやっているんだろう WIN32APIの仕様の話など、どうでもいいわ
832 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:02:17.52 ID:bGJc4W0W.net] なんかC++の質問しづらいね 本当に初歩的な質問なんですけど C++のThreadはWindowsじゃ使えないのでしょうか、それともgcc4.8.1のほうが悪いのでしょうか
833 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:05:42.38 ID:mwiD0ozs.net] 多分最終的な論点はそこじゃなくて なんでメモリが極限状態でOSのAPIが失敗するような状況下でも生き残らないといけないような 究極のログ取りアプリを作らないといけない時に、PostMessageなんか使ったのか、だろうな 彼はなにかメインスレッドに結果を伝えるためにPostMessageを使ったらしいが メモリ使用量調べてログファイルに書き出すだけの、メモリリークの証拠をつかむためだけの 使い捨てのアプリにサブスレッドなんかいるか? 適当なウエイトかけてループ回して、メモリ使用量取得して、ログファイルに書き出す これだけだろ 多少何か工夫するにしてもPostMessageの出番は無いように思うが 極限状態でも生き残らなきゃならないなら、なおさらのこと、余計な仕組みは要らないだろう ウィンドウも要らない
834 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:27:01.38 ID:k6vnuBvm.net] >>832 c++11のstd::threadならきちんと設定されたコンパイラ、ライブラリなら使えるはず。 gccのバージョンは知らんが、win上で使うなら、mingwだったりcygwinだったりの影響もあるしなんとも言えない。 そもそも使えないってどういう事?
835 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:42:39.56 ID:YtvhXGz3.net] >>832 stackoverflow.com/questions/21211980/mingw-error-thread-is-not-a-member-of-std ここいらへんか?
836 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 20:05:21.87 ID:YtvhXGz3.net] >>833 ウインドウもってるだけじゃなくてメモリアローケーションも必須とか言ってるから、 そういうプログラムを作るだけの技量が無い素人が無理して作ったので根本的にダメ。 MFCで作ってたりするかも。爆笑 ところで、以前から気になってたので「"throw new" C++」で検索すると40万件もヒットする。 「throw newは禁じ手」って書かれてるページもあるだろうけど、アホなページが多すぎる。 例外投げる時に例外発生する可能性のある操作なんか、頭沸いてるとしか思えない。(しかもdeleteしないとリークするし) さらに、C#から入ってきたアホはnewするのが当たり前とか、死ね。 476 :デフォルトの名無しさん:2016/02/09(火) 17:42:12.67 ID:GGDlYrLi >>475 システム監視ソフトだからといってメモリ確保しなくていいわけじゃないです そのソフトはどのプロセスがいつ起動してどれだけのメモリを使用していつ終了したかを ログするものでしたがその過程で新たなメモリ確保はどうしても発生します
837 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 20:52:58.77 ID:YKrrGoZL.net] >>829 すまん>>828 のから飛んで脊髄反射でレスしてしまった 無視してくれ
838 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 20:54:44.07 ID:YKrrGoZL.net] あ、IDかわってるけど、>>829 は俺で自己レスね
839 名前:デフォルトの名無しさん [2016/02/14(日) 22:02:02.79 ID:uelnhBqi.net] ウィンドウハンドルに対する操作関連をまとめた、 自作クラスを作成しています。 以下コードの★★の箇所で以下のコンパイルエラーとなります。 ------------------- error C3867: 'AutoOperation::EnumChildProc': 関数呼び出しには引数リストがありません。 メンバーへのポインターを作成するために '&AutoOperation::EnumChildProc' を使用してください ------------------- エラー表記通り「&AutoOperation::EnumChildProc」に変えると、 今度は以下のコンパイルエラーとなります。 ------------------- error C3374: delegate インスタンスを作成する場合以外に、'AutoOperation::EnumChildProc' のアドレスを指定できません ------------------- やりたい事はクラス内でCALLBACK関数の呼び出し処理EnumChildWindowsを完結させたいのです。 解決策をご教授下さい。
840 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 22:27:21.41 ID:r/RAVviG.net] >>834 すみません、自己解決してしまったのですが、そもそもライブラリがないという状況でした MinGWを4.9.2にしたらコンパイルが通りました!
841 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 22:31:54.01 ID:jQtJnDco.net] >>839 AutoOperationはクラストか?クラスなら AutoOperation::EnumChildProcがstaticでないとうまくいかんよ
842 名前:デフォルトの名無しさん [2016/02/14(日) 23:52:18.37 ID:uelnhBqi.net] 「System.Collections.Generic.List<T>型」を「LPARAM型」に変換する方法、 またその逆の変換をする方法、を教えて下さい。 List<T>型をLPARAM型に変換する必要があり、 その後で、List<T>型をLPARAM型から再取得する必要があるのです。
843 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 23:59:09.56 ID:KVV6N47s.net] >>842 それC++/CLIじゃね?↓こちらでどうぞ。 くだすれC++/CLI(初心者用)part2 peace.2ch.net/test/read.cgi/tech/1268613679/ スレ立てるまでもない質問はここで 142匹目 peace.2ch.net/test/read.cgi/tech/1454219795/
844 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 00:15:11.02 ID:oAOjOrx0.net] >>836 throw newがそんなに変か? マイクロソフトのMFCとかDeleteする決まりでnew相当のことしてるし、 std::excetionが仮想デストラクター持ってる時点でnewは想定内だと思うが
845 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 01:03:22.65 ID:2arjOQyX.net] template<typename E, typename... A> [[noreturn]] auto my_super_urtra_ excetion(A &&...p) { std::unique_ptr<std::excetion> r; try { auto sp = make_unique<E>( forward<A>(p)... ); r.reset(sp.release()); } catch(...) { termineit(); } throw r; }
846 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 01:18:37.66 ID:t53MVuXe.net] CreateThreadでスレッド作成した場合crtが正しく動く保証はある?
847 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 01:27:44.57 ID:FDnCcdJi.net] イニシャライズ関数とかないんかなー。
848 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 07:11:27.03 ID:X0JRo1x/.net] Win32の話はスレ違いだな
849 名前:デフォルトの名無しさん [2016/02/15(月) 07:58:34.47 ID:CWNdtN9u.net] detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14155900084
850 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 08:29:56.66 ID:E84Q1jzs.net] >>844 >>845 も書いてるけど、スマポにいれるときに必要でしょ。 MFCがそうしてる理由は知らない。もう調べる気にもならない。
851 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 15:58:42.31 ID:OrmzHinO.net] >>846 動かないから代わりに _beginthreadex を使う
852 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 19:21:41.46 ID:/dhi15sf.net] ランタイムに依存せずに,win32api を直接叩くの筋だろうに
853 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 19:28:23.35 ID:+a5jVKa7.net] 独学で勉強中ですごくくだらない質問だと思うんですが、よくわからないのでよろしくお願いします //---------- #include <iostream> int main(){ int *i = new int() ; std::cout << i << std::endl ; return 0 ; } //---------- これだとvalgrindやcppcheckを使ってチェックするとメモリリークしてるとして言われます 実際newしたものをdeleteしてないのでこちらは納得できるんですが、一方次の //---------- #include <iostream> int *i ; int main(){ i = new int() ; std::cout << i << std::endl ; return 0 ; } //---------- これだとnewしたものをdeleteしてないのにどちらのツールもエラーが出ずに終了してしまいます この後者のコードは実際に問題無いんでしょうか? それともただ検出漏れなだけで正しくないものなのでしょうか? また、もし問題がないならその理由(なぜグローバル変数として宣言しているとdeleteしてないのに問題ないのか)も教えていただけると助かります よろしくお願いします
854 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 19:40:37.00 ID:CbTFphiX.net] 問題はある 検出が困難だからじゃね?リンクする全ての翻訳単位を調べる必要がある
855 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 20:25:22.92 ID:nJzI4k3D.net] 昔、plaugerかmeyers様が言っていた「これはリソースリークじゃないんだぜ」ってセリフをドヤ顔で言ってみたくて >>853 みたいなコードを書いてみたが、なんのメリットもないどころか害しかなかったorz
856 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 20:39:29.70 ID:/dhi15sf.net] >>853 どっちもリークしてるよ,後者は検出をとちっているよ
857 名前:デフォルトの名無しさん [2016/02/15(月) 20:42:06.75 ID:515HeFhA.net] cppcheckって int* i = new int; は検出するけど new int; ってやると検出してくれないクソツールだったような
858 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 21:30:54.97 ID:E84Q1jzs.net] リークとは寿命が終わったオブジェクトにメモリ領域が割り当てられている事 グローバル変数の寿命はプログラムの終了に等しいのでリークではない
859 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 21:45:37.09 ID:g9kjW0Ge.net] >>858 int *i ; の iそのものはな。
860 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 21:58:25.68 ID:cINU//5g.net] C++使っていてメモリ以外のネイティブリソースのことが頭にないなんてどれだけアホなんだ
861 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 21:59:58.72 ID:Kxee8Til.net] >>858 それな めんどくさくなりそうだから黙っておいた
862 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 22:47:14.02 ID:nJzI4k3D.net] >>858 僕のドヤッを横取りしないでくれまいか
863 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 23:22:30.66 ID:t1etBRNf.net] >>858 グローバル変数のリークなんて誰も言ってないことでドヤ顔されても… w
864 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 23:47:29.60 ID:sBsZfSdn.net] アスペは指摘するポイントがずれているな 「グローバル変数の寿命はプログラムの終了に等しいので(グローバル変数で参照されているオブジェクトの寿命もまたプログラムの終了に等しいので)リークではない」 という日本語だろうに
865 名前:853 mailto:sage [2016/02/16(火) 00:04:03.79 ID:X2hmxT3s.net] 頂いたレスをヒントに色々パターンを試してみて自分なりに納得できました ありがとうございました
866 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 00:12:13.15 ID:yTUaUSx5.net] 何をどう納得したんだか 素人がnewを使うとやはりロクなことがない
867 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 00:47:08.51 ID:utvP1D7N.net] マジ>>860 に尽きる、 >>858 のリークの定義は片手落ちすぐる
868 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 06:42:53.10 ID:8Pefi829.net] そもそもintをnewするな
869 名前:デフォルトの名無しさん [2016/02/16(火) 08:09:37.14 ID:5UqE7wWz.net] おまえらナマポ好きだな
870 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 09:22:32.06 ID:WpzjUCIx.net] >>859 >>863 ヒープ領域とプログラムの終了に関係に対して典型的な勘違いをしている可能性がある (>>853 の一番目の例で「リークしている」と考えている可能性) >>866 >>868 お前らはおそらく他のみんなより周回遅れだからもうレスしないほうがいい
871 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 13:01:17.95 ID:55V2OvFf.net] >>870 お前は周回遅れ以前に方向が明後日だからレスするなよ…
872 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 13:30:13.10 ID:7QfacfPp.net] 熟練者が下位ライブラリで使う以外ではnewは絶対に使わせるな! JavaやC#から流れてきた人間にはC++のnewは到底扱えないものだと いうことが繰り返し繰り返しはっきりしてきた
873 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 13:36:34.99 ID:DcMkse9A.net] そっかぁ 繰り返し繰り返しはっきりしてきたかぁ
874 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 13:39:06.49 ID:xyyoUOSC.net] sbrk と mmap はok?
875 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 13:49:41.64 ID:8Pefi829.net] プログラムの終了でヒープが開放されるのはOSの機能の話であっても、言語仕様ではないよね? 基本的にはプログラム内でnewしてアロケートしたメモリはdeleteしないとダメなんじゃないの? それをメモリリークと呼ぶかどうかは別として
876 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 16:53:19.68 ID:3V9H/1fh.net] 今はツールが検出できるかって話だから、どうした方が行儀が良いとか関係ないんだよ VCのメモリリーク検出ツールなら>>853 の下のバージョンのコードのメモリリークを検出するよ しかし、cppcheckは静的に解析してメモリリークを探すものだから限界があるのだろう
877 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 17:09:29.10 ID:3V9H/1fh.net] あと、メモリリークに対する考え方がツールによって異なるのだろう VCのメモリリーク検出ツールは、newしたものをdeleteし忘れていたら プログラム終了時に教えてくれる単純なものだが これとは違ったポリシーのツールなのかもしれない 例えば、どこからも参照されていないメモリブロックが有ったら、メモリリークとする、という考え方なら グローバル変数に突っ込んである限りは、プログラムが生きている間はずっと参照が残るので deleteしなくてもメモリリーク扱いにならない、とかかもしれない 良くは知らんが
878 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 23:59:38.31 ID:RidGc7qJ.net] で?
879 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 00:49:29.84 ID:BPMYjlVf.net] >プログラムの終了でヒープが開放される これやってくれない処理系って例えば何ですかね? 組み込みのOSとかだとあるんかな
880 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 01:03:08.75 ID:N1klTUFY.net] >>853 早い話そのツールはリーク検出については使いものにならないということ
881 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 07:43:11.29 ID:d8kqwnnS.net] プログラム終了までと言うけど一つの翻訳単位で A a; int * p; Aのデストラクタが呼ばれたときはpの寿命尽きてるだろう
882 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 09:50:12.84 ID:STxbdzYG.net] >>881 os(ランタイム)が仕事しないかもよ
883 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 10:12:54.63 ID:UG2kvZqb.net] int * p; pの寿命が尽きたあとでpが指していたヒープ領域が回収されていなければ、その時点でメモリリーク。 そのあと回収されるかどうかは別の話。
884 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 20:09:44.69 ID:o4vOr9JW.net] だけど、LinuxやGNUの人たちの中には プログラム終了時にプロセスで使っていたメモリを開放しない派の人たちがいるでしょ OSが開放するからって理由でさ LinuxはヘボOSじゃないからプロセス終了時に自動でメモリを開放するから余計なことはしないっていうね そういう人たちからしたら int *global = new int; でプロセス終了時にdeleteしてないのをメモリリークで検出されたら困るわけで そういう人たちの圧力に屈して、グローバル変数が参照しているメモリブロックはメモリリーク扱いにしてないんじゃね?
885 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 20:13:44.87 ID:o4UHPyEX.net] もうやめよう もう、やめよう
886 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:13:10.77 ID:sobQnjjW.net] グローバル変数と同じ寿命のオブジェクトを開放しないことはメモリ(およびリソース)リークにあたらない、という人は、 異なる翻訳単位に属する静的オブジェクトが依存関係を有するケースを見たことが無いのであろうか… その場合、起動時の初期化順がA→B→Cなら開放順はC→B→Aでなければコケて例外を吐きかねないが OS(と処理系の静的オブジェクト開放ランタイム)はそんなことお構いなしに適当な順序で開放してくれる なお、異なる翻訳単位に属する静的オブジェクトに依存関係を持たせることは、 プロセス内の実行環境全体に低水準レイヤーのAPIを公開するみたいな階層設計なことがあり一概に糞とは言えない
887 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:13:29.77 ID:BJJMKH5P.net] valgrindのメモリリーク検出が使ものにならないとかwww 使い物にならないのはお前だろwww マジレスするとOSが纏めて解放してくれる環境で自分で一つ一つ解放する方がバカ C99の_ExitかC++11のstd::quick_exitを知らんのか
888 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:15:19.69 ID:sobQnjjW.net] メモリリークの話はもうやめようというレスがあったので 開放順の話にしてみた
889 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:19:53.84 ID:g2jiUPfD.net] delete global;してもOSには返却されないぞ。
890 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:22:14.50 ID:ul+wSSfx.net] メモリーアロケータが握ってるが、メモリアロケータのプロセスが死んだら解放される。 アロケータさんが牛耳ってるところにメモリくれって言いに行ってないって言われたらそのアプリは終了だから。 メモリは解放しましょう。
891 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:35:47.24 ID:e1xOPzhr.net] (スレのレベルを下げるのは)もうやめよう そう言ったんです 不毛ですやん?
892 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:37:55.44 ID:BJJMKH5P.net] バカに自分のバカさ加減を知らしめないとスレのレベルは下がる一方だろ?
893 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 21:39:05.85 ID:e1xOPzhr.net] >>892 アンタのレスは良いよ でもさ、きっとそれも無駄に終わる もう毎度毎度のクソ展開は始まっている
894 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 22:48:07.25 ID:N1klTUFY.net] OSが解放してくれるからーの奴はまともに開発の仕事やったことないんだろうな
895 名前:デフォルトの名無しさん [2016/02/17(水) 22:49:54.80 ID:/p51h0GV.net] いちいちこれはOSが解放するからOKとか自分で解放しなくちゃだめとか区別する方がめんどくさいだろ 全部解放すりゃいいだけなのになんでわざわざ手間かかる方を選ぶのか
896 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 22:57:23.22 ID:N1klTUFY.net] デバッガで動かして終了時にリークメッセージがぞろぞろ出るやつなんて作ったらボコボコにされるわw 共同作業が全くない環境ならいいかと思うかも知れんが本当にアカンリークが分からなくなるだろ
897 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:33:08.75 ID:nBw88SJt.net] デバッグ版はまじめに exit リリース版は _Exit
898 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 23:58:23.11 ID:BpXyDkaJ.net] staticデータメンバーが、constなリテラル型の場合、クラス定義内の宣言に、初期化子を書くことができる。 この場合、初期化子は定数式でなければならない。staticデータメンバー自体も、定数式になる。 初期化子を書かない場合は、通常通り、クラス定義の外、同じ名前空間スコープ内で、定義を書かなければならない。 この場合は、定数式にはならない。
899 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 00:33:29.72 ID:lQH/V+Cq.net] >>895 解放処理にもコストがかかるから gnuのcpが終了時にハッシュテーブル全て丁寧に破棄してて数億件のファイルコピーをすると終了処理にも膨大な時間がかかってたから、 解放しないように修正されたのは有名な話だろ >>896 だからまともなメモリリーク検出ツールであるvalgrindは >>853 の例をメモリリークとしないんだよ。 (オプション入れると報告はする) それをメモリリークとして報告するようなツールがもしあるなら使い物にならないクソだから今すぐ捨てろ。
900 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 00:51:59.53 ID:8+Q+0B6C.net] >>899 さあそのcpの例なんて知らねーよ メモリを解放するのがバカだったのかテーブルの持ち方がバカだったのか分かんねーな そんな特殊例を無闇に一般化して、だから丁寧にメモリを解放する奴はバカだとか言われてもね valgrindとやらで>>853 をリークとするオプションがあるなら何故それを教えてやらない? そのオプションは特殊な場合じゃない限り入れたほうがいいからw
901 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 01:04:13.35 ID:lQH/V+Cq.net] なんで知らない癖にそんな偉そうなんだよ・・・ 救いようがないな
902 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 01:14:05.63 ID:8+Q+0B6C.net] だからそのvalgrindオプションを教えてくれよ それで>>853 は解決だから
903 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 01:30:26.74 ID:lQH/V+Cq.net] 問題ないから(デフォルトでは)検出しないだけだから教える必要ないよ。 そのオプションについて教えてほしいと本人に頼まれてるわけじゃないしな。本人だとしたらなおさら教える気しないけど
904 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 01:36:35.06 ID:8+Q+0B6C.net] なんでそんなに勿体ぶるんですかねー?www
905 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 04:59:50.13 ID:wtekQPk7.net] light.dotup.org/uploda/light.dotup.org299941.png 迷路しておちつけ。
906 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 05:28:07.86 ID:R4UuwZL3.net] gnuのcpが糞だからメモリ解放は要らないという理屈でいくと、 >>899 みたいなアホがC++やってるからC++は馬鹿専用なので捨てるべき言語になるな
907 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 05:34:41.02 ID:wtekQPk7.net] >>905 これくらい以上の迷路作るときはヒープ必須なんやで。 これくらいのヒープをぽいぽいしてたら長期運用なんか無理やで。
908 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 06:01:16.63 ID:cxWjsl/x.net] 自分の知能ではできないからと言って 出来ないことがさも普遍的であるかのように語られても
909 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 06:48:52.39 ID:wtekQPk7.net] コードくれ。
910 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 07:23:38.84 ID:wtekQPk7.net] 頭の悪いAIが今後誕生するのはメモリを開放しないからだ。とかいってみる。 記憶領域が足りなくて馬鹿になる。レガシーきっていいかは本人にはわからないので貯め込みジバーク。
911 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 07:32:21.02 ID:QAq70uC+.net] https://youtu.be/YuBdhrZuJTs
912 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 07:33:19.43 ID:lQH/V+Cq.net] >>893 の言ったとおりになったな。 ちなみにvalgrindのオプションは実行結果を読んだら2回目にたどり着く
913 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 07:44:35.15 ID:wtekQPk7.net] >>911 すげー。よく続きからかけるな。 俺の>>905 はコーディング4時間だぞ。前に一回作ったことあるからそれも踏まえてね。 最後に燃やしてるのが悲しみを誘う。昇華されたんですな。
914 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 08:05:37.08 ID:8+Q+0B6C.net] >>912 「2回目にたどり着く」www とっととそれをここに書きやがれ でなけりゃこのスレにはもう二度と書き込むな ここはお前が勿体ぶって物知り顔するスレじゃないんだぞ >>853 をデフォルトでリークとしないクソツールなんてインストールする気にもならないが
915 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 08:09:31.23 ID:8+Q+0B6C.net] インストールする気にもならないがお前がそのオプションとやらを出したら リファレンスくらいは確認してやるよ
916 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 08:19:15.91 ID:lQH/V+Cq.net] ここはお前が偉そうに教えを乞うスレだったんかw
917 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 10:12:51.26 ID:t7yUNGxd.net] こいつPostMessageの馬鹿じゃね? 間違いを認めず尊大な態度で開き直るってパターンが一緒
918 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 12:26:56.51 ID:cxWjsl/x.net] >>914 大丈夫だ。デフォルトで実行するとフルチェックの指定方法が表示されるからツールとして問題無い
919 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 12:40:57.57 ID:dlsHUuTC.net] どんなクズツールの紹介かと思ったらvalgrindじゃないか たまにお世話になってます
920 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 22:25:43.19 ID:cxWjsl/x.net] >>899 >valgrindは >>853 の例をメモリリークとしないんだよ valgrindはリークをdefinite,indirect,possible,reachableに分類分けしていて >>853 はreachableのリークとして判定される訳だが どうして嘘をつくのか
921 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 23:36:06.21 ID:cxWjsl/x.net] >>898 >staticデータメンバーが、constなリテラル型の場合、クラス定義内の宣言に、初期化子を書くことができる んなこたーない
922 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 23:39:06.37 ID:lQH/V+Cq.net] >>920 せやね 正確にはメモリエラーにしないだったね。 ごめんなさいね。
923 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 23:40:13.29 ID:jiQGl0+C.net] >>921 「staticデータメンバーが、constなリテラル型の場合」 をこのページで検索してみては? ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml#class.static.data
924 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 23:48:43.86 ID:cxWjsl/x.net] 江添は規格じゃないので読む必要はない 江添だって時々間違えることはある
925 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 23:58:46.71 ID:X4zyXl/p.net] >>924 有名人なのか?
926 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 00:42:06.54 ID:hdqL8A7v.net] >>921 しかしgccでもclangでもvc++でもできるのは事実
927 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 00:57:16.68 ID:qtkJJZHl.net] どうしてそう息を吸って吐くように嘘をつくのか ideone.com/Bdo8QL Visual C++:エラー G++:エラー clang:エラー
928 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 01:03:47.07 ID:yQQGU+cl.net] >>927 はい ideone.com/NSy2jj
929 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 01:06:02.63 ID:hdqL8A7v.net] >>927 ああごめん、俺が言ってるのは整数型だった。
930 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 01:09:43.25 ID:yQQGU+cl.net] >>927 すまんミスってた。
931 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 01:47:17.70 ID:i395RlVR.net] >>928 ID:qtkJJZHlのC++は名前にliteralが含まれればそれはリテラルになる
932 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 04:00:06.01 ID:cPukLG4B.net] どういう事? ID:qtkJJZHlが正しいんじゃないの?
933 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 04:03:39.73 ID:cPukLG4B.net] ああ、リテラルとリテラル型の違いがわかってない人がいるだけか
934 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 10:19:45.75 ID:P6v/Cgbl.net] > staticデータメンバーが、constなリテラル型の場合 誤 リテラル型 正 整数型・列挙型 クラスのstaticデータメンバーがリテラル型の場合は (constではなく)constexprのときに初期化子が書ける(この場合正確には『初期化子を書かなければならない』)
935 名前:デフォルトの名無しさん [2016/02/19(金) 12:51:22.58 ID:cPukLG4B.net] constはfloatもできないのね 今まで壮絶に勘違いしていた
936 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 12:54:01.88 ID:/AvoFovE.net] おまえら実はプログラム実際に書いたこと無いだろ(´・ω・`)
937 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 20:04:26.07 ID:eREs2hdb.net] つ peace.2ch.net/test/read.cgi/tech/1447298537/
938 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 22:24:52.27 ID:iVAswwzA.net] >>934 const volatile boolはconstな整数型ですが クラス定義で初期化子が書けないのは何故ですか
939 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 01:58:57.86 ID:+KUF2f1T.net] 君がその場の背景・空気・流れといったものを読めない人だから いやいやかなりマジで
940 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 04:44:38.86 ID:WMw6sfmv.net] >>936 やめようよPostMessageしてた人にPostMessageするの
941 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 04:50:30.62 ID:fyeNp01h.net] >>936 彼らは歴史をなぞるだけのトレーサーだったりするのかもしれない。
942 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 05:49:25.50 ID:uiB0F9x6.net] まーだ極度なメモリ不足下でPostMessageが失敗することがあるという事実にいちゃもんつけてるバカが居るのか よっぽど暇なんだろうな >while (PostMessage(hWnd, WM_NULL, 0, 0)); とかやって「証明終了!」とかいうバカだから暇でしょうがないんだろうなあ
943 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 06:02:10.07 ID:fyeNp01h.net] いないから。いないから。静まり給え。
944 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 07:18:35.18 ID:0KWzs3FY.net] valgrindのオプションを今回だけは特別に教えて下さい!
945 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 09:12:00.07 ID:WMw6sfmv.net] valgrindも知らないなんてありえないよね…
946 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 12:03:23.44 ID:KnZWdrIJ.net] ID変えながらひとりで会話して可哀想 クソツールと否定されて相当悔しかったらしい あ、PostMessageの時もそうだったかw
947 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 16:35:56.90 ID:WX8IzsC4.net] valgrind,結構役立たずなんだ‥
948 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 17:50:05.19 ID:7FQ5kWTX.net] エロ動画の「盛り上がり場面」を判定するソフトを作ろうとしているのですが、盛り上がりっぷりの検出をどうすればできるか悩んでいます 各コマごとのピクセル情報はすでにあるものとして、そのピクセル情報からその場面がどれくらいヒートしてるか計るアルゴリズムについて アイデアがあれば教えて頂けませんでしょうか。 今はモザイクがかかってる箇所に対する反復運動の激しさから判定しようと思ってるのですが それだけでは正確な盛り上がりっぷりがわからないのかなと思っています
949 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 17:59:07.80 ID:jIhi6tPT.net] 大相撲の土俵際の攻防を判定するソフトがあるから参考にすれば?
950 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 21:02:56.26 ID:frKGVU8o.net] 喘ぎ声から判定するのが近道なんじゃないかな
951 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 21:52:40.73 ID:owoJYL1y.net] >>950 喘ぎ声を必死におさえてる表情に興奮するオレみたいな奴もいるからそれはダメ
952 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 22:49:16.33 ID:T3VT//dk.net] あえぎ声を必死に押さえている音は認識できるんじゃね。 被験者100人くらいに膨張率センサつけてAV見放題で数ヵ月かければDLに必要な学習データも集まるかもよ。
953 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 22:58:04.49 ID:cJNMkscd.net] >>948 それ作ってなにに使うとよ?
954 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 23:08:54.38 ID:7FQ5kWTX.net] 音ってのは盲点でした 女喘ぎ声から男の攻めっぷりが判定できて、男喘ぎ声から攻められっぷりが判定できるかも >>953 見てる動画の雰囲気に合わせてUSBオナホを動かすソフト作ってます
955 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 23:17:06.05 ID:5/VRxrKY.net] 使っている奴の脈拍や呼吸数をチェックする方がいいのでは?
956 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 23:45:05.67 ID:7FQ5kWTX.net] 下世話な話で申し訳ないのですが 使ってる人間に合わせたシステムだとまるで意味が無いのです あくまで「自分の意思に関係なく動く機械によって快感を得る」というのがUSBオナホの基本でして・・・
957 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:03:45.26 ID:vvUk+ASg.net] AVの構成ってだいたい決まってるでしょ からみ→くんに→ふぇら→挿入みたいな 場面の切り替わりをうまく検出してシーンの割り当てるのがいい気がする
958 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:06:32.35 ID:Xn8BbX8n.net] 音声信号をそのままUSBオナホの振動に変換するだけでもかなり良いんじゃないかな
959 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:08:25.81 ID:mZ9I4pVL.net] このスレッドは18禁になりました。未成年者はとっとと出ていって下さい。
960 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:09:05.15 ID:Xn8BbX8n.net] あとは動画の動き検出して、動きの多さにUSBオナホを合わせるとか これに>>958 もプラスすると、意表を突かれた制御不可能な感じになって楽しいのでは?
961 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:14:22.54 ID:xPHbwGFI.net] 機械学習の話は機械学習スレへ池、 ttp://peace.2ch.net/test/read.cgi/tech/1439302488/
962 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 00:29:39.88 ID:S0uLAIyq.net] USBオナホとか技術の粋だな 胸があつくなるわ 使ったことないけど
963 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 02:15:25.64 ID:UzPMPT/j.net] C++ そこそこは勉強してたのですが autoを知ったのはつい最近です。 いつ頃できたものなのですか。
964 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 02:18:59.38 ID:BYiGM6la.net] まずぉまえの言う最近知ったautoが何を指しているのか伺おうか C++は同じキーワードに様々な機能を定義するUNKO言語なので
965 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 02:34:57.21 ID:BYiGM6la.net] なんだまた炎上学習法か? auto int i1 = 0; 1998年 auto i2 = 0; 2011年 auto f1() -> int; 2011年 auto f2() {return 0;} 2014年 auto f3() -> auto {return 0;} 2014年 decltype(auto) j = i1; 2014年 auto f = [](auto p){}; 2014年
966 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 06:47:26.21 ID:UzPMPT/j.net] ありがとうございます。 2011のようです。 納得しました。
967 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 06:47:59.04 ID:Vu+T+AQR.net] autoはC言語登場初っ端からある 貴様が情弱なだけのこと
968 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 06:51:27.85 ID:Vu+T+AQR.net] そして式から型を判別しようとしてautoを使い始めたのはつい最近だ
969 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 07:06:48.69 ID:6FoMFdKR.net] 周回遅れでドヤ顔 w
970 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 09:03:30.90 ID:UzPMPT/j.net] なんかすごく(レスの内容に)レベルの違いのようなものを感じます。 色んな人がいるようで面白くはありますが。
971 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 09:36:47.03 ID:UzPMPT/j.net] 一応書いておきます。Cはかなり昔から使ってますがわざわざautoなんて書いたことはないと思います。
972 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 09:51:17.50 ID:etYdR+rT.net] >>971 ここで聞くのは効率悪いし、自分で今どきのC++をリハビリ学習した方がいいよ。 autoなんてたいしたことないけど、理解に時間がかかるものはいろいろあるから。
973 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 10:16:36.25 ID:UzPMPT/j.net] しばらくは個人作業のみなのでその限りにおいてきちんと動作はするものは作れはします。 今のとこSTLも浅く使えれば十分ですし、CLIとかはめんどくさいし、Boostは難しそうだしで、今から何勉強するのかが難しいんですよね。 やりたいこと何やるにしても環境依存のことばかりです。
974 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 10:21:10.84 ID:toLQNscP.net] >>954 俺に言わせるとそれほど難しいことじゃない Windowsの場合、盛り上がり場面に入る前にPostMessageが失敗するようになるから その辺に対応するのがコツ
975 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 10:51:44.78 ID:xPHbwGFI.net] >>974 それな 大事だよな
976 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 11:17:52.46 ID:VCiscas1.net] おじいちゃん、それ、自分のレスだよ
977 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 11:47:49.10 ID:TK0DoK1H.net] externってどういうときに使いますか?
978 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 11:51:02.67 ID:w4t8RSml.net] 省略されてるだけで使ってると思うよ
979 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 12:05:29.00 ID:UzPMPT/j.net] ore.h //#ifndef mydreamで括るなりすれば尚良 //#define mydream extern int money; extern class myhouse; extern struct mywifes; //#endif ore.cpp int money=500; class myhouse { クラスの定義 }; struct mywifes { 定義 }; とかしとけば 他のcppからは#include "ore.h"だけで済むとかでないの? 二重に定義されたりもないし。
980 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 12:30:13.12 ID:BYiGM6la.net] 既に使っていると言うが、externが何をするものなのかを>>978 が理解しているかどうか疑問だ
981 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 12:51:33.19 ID:m+BXwdHb.net] >>979 C++どころかC言語の理解も怪しい 初心者スレに行きなさい
982 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 13:26:23.63 ID:UzPMPT/j.net] >981 extern c++ あたりで検索したらすぐわかるよね? 俺の夢は実現しない そういうことなのだよ
983 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 13:38:31.92 ID:Xl+njwgf.net] >>974 これが正しい 盛り上がり場面に入るとインスタンスがクイックソートされて参照カウントも静的スコープされるから 結果的にハンガリアン記法のフロントエンドみたいなランタイムライブラリで判定できる
984 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 13:45:05.05 ID:yp1la/Pc.net] >>983 いやー、ハンドルみたいな使い方を規定していて、 自分は外部関数で値を変更したいんですけど、ユーザーには触ってほしくない。 という、わがままな欲求です。 そのうちUnified Call Syntaxが入ったら、いろいろやろうと思ってるところです。 これくらい以上の迷路作るときはヒープ必須なんやで。 これくらいのヒープをぽいぽいしてたら長期運用なんか無理やで。
985 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 13:48:22.46 ID:hql2OPnW.net] >>974 のいうとおり イベントログから対象データをピックアップしてヒューリスティックアルゴリズムによりトランザクション制御を解除することによってstatic領域を確保できる
986 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 14:43:51.25 ID:BYiGM6la.net] >>981 むしろ>>979 こそexternの正しい使い方なのだが何を言っているのか
987 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 15:14:19.72 ID:Z2I+oPAi.net] >>979 の例 ore.h にある extern class myhouse; extern struct mywifes; クラスや構造体の名前の事前宣言っていうのかな、 ではexternを書かないって話じゃないかな。 エラー出ませんか? あと mywifes ってC++の文法と別に色々気になるんだけど。
988 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 15:19:46.90 ID:m+BXwdHb.net] >>986 まさかそんな初心者以下の馬鹿げたレスをされるとは思わなんだ 定義も無しにexternされた構造体型、クラス型変数をどう使うって? レスを読んでなかったのか?はたまた不完全型を参照やポインタのみとして使用し、 ただコンテキストとして使用するなど世迷い言でも言う気か? どういう言い訳が聞けるか見ものだな
989 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 15:57:23.17 ID:Xl+njwgf.net] 知ったかレスと知った風レスとマジレスが飛び交ってカオスになってる
990 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:12:50.14 ID:OjYyYeGY.net] 正しいツッコミは mywiveだろうがアホ が正解
991 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:14:54.41 ID:OjYyYeGY.net] typo アホは俺だorz
992 名前:デフォルトの名無しさん [2016/02/21(日) 16:18:47.42 ID:toLQNscP.net] >>988 本質はそこじゃ無い。 intはあってるし、不完全型という利用方法があるので、挙足取り失敗。 externは要らない子とか言ってたバカ?
993 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:21:36.17 ID:hql2OPnW.net] >>988 君は stdio.h の FILE 構造体のメンバを意識して使っているのかね?
994 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:26:45.95 ID:xPHbwGFI.net] externは引き続く識別子が外部シンボル(!=ファイルスコープ)であることを明示するためのもので、 省略したら外部シンボルになるから省略できる クラス名や構造体名は単なる名前であってリンカが取り扱うシンボルではないから externをつけるのは無意味 少なくともVCだと extern class myhouse; extern struct mywifes; は警告の対象
995 名前:デフォルトの名無しさん [2016/02/21(日) 16:30:04.99 ID:toLQNscP.net] 不完全型にすらなってないのか。ちゃんと見てなかったわ。
996 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:30:44.01 ID:BYiGM6la.net] >>988 extern class myhouse; を extern class myhouse global_variable; と読み間違えた
997 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:31:32.38 ID:xPHbwGFI.net] 不完全型は次の機会のどっちかでしかまずお目にかからない&利用する必要が無い 1. 木やリンクリストのノードを表すクラス or 構造体の定義(自分自身と同じ型へのポインタをメンバに持つ 2. ヘッダファイルに構造体定義を書かずにすます「絶縁」テクニック ただ最近のコードチェッカは2の絶縁テクニックで警告を上げてちょーウザいから、個人的には2は廃れたテクニック
998 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:31:55.92 ID:BYiGM6la.net] 誤 extern class myhouse global_variable;と読み間違えた 正 class myhouse{}; extern class myhouse global_variable;と読み間違えた
999 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:33:04.40 ID:89qQ0NtX.net] wife の複数形は wives
1000 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:34:23.39 ID:xPHbwGFI.net] 1000ならメモリリークでPostMessage()がエラー
1001 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。