C++相談室 part122 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2016/01/23(土) 23:06:15.32ID:HdItgJjmただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part121
http://peace.2ch.net/test/read.cgi/tech/1449240881/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1439849418/
次期規格C++1zはこちら
C++14/C++1z 20
http://peace.2ch.net/test/read.cgi/tech/1410382924/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0002デフォルトの名無しさん
2016/01/23(土) 23:07:25.42ID:HdItgJjmhttps://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
0003デフォルトの名無しさん
2016/01/23(土) 23:11:46.68ID:HdItgJjm環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0004デフォルトの名無しさん
2016/01/23(土) 23:14:12.22ID:HdItgJjm0005デフォルトの名無しさん
2016/01/24(日) 02:28:04.57ID:0LR1dPfv今の糞コードはこんな感じです。
class A {
vector<shared_ptr<B>>; // 要素は数十個
};
class B {
vector<shared_ptr<C1>>; // 要素は数万個、要素内の状態に応じてソート
vector<shared_ptr<C2>>; // 同上
vector<shared_ptr<C3>>; // 同上
weak_ptr<A>;
};
class C1 {
weak_ptr<A>;
weak_ptr<B>;
};
class C2 {
vector<weak_ptr<C1>>; // 要素は数十個
weak_ptr<A>;
weak_ptr<B>;
};
class C3 {
vector<weak_ptr<C2>>; // 要素は数十個
weak_ptr<A>;
weak_ptr<B>;
};
クラスの階層としては A→B→C1,C2,C3 ですが、以下を満たした上での適切なクラス設計が分かりません。
・クラスの異層間および同層間の参照がある
・B内のvectorを要素の状態に応じてソートする
これらのスマポやコンテナをどう変えるのが適切なんでしょうか?
0006デフォルトの名無しさん
2016/01/24(日) 08:22:51.32ID:TFTujVHZ最初に結合考えられてない状態で全部オブジェクトが作られてそのあとつながっていくパターンなのか、
それとも親が子を作るパターンしかありえないのかで話は変わる
あとクラスの階層って表現は基本的にクラスの派生・クラスの上位下位って意味で使われるから、そういう場合はノードの親子関係とかそういう言葉を使った方がいい
0007デフォルトの名無しさん
2016/01/24(日) 11:39:36.09ID:LHp2Xjejもしかしたら全て同じクラスで表現して、有向グラフとして構成するのが一番かも知れん。
> クラスの異層間および同層間の参照がある
ノード間に自明な階層構造があるなら、親への弱いポインタとノードの参照パラメタのタプルを持てばいいんじゃない?
class A {
friend B;
vector<shared_ptr<B>> b;
};
class B {
weak_ptr<A> a;
size_t B_index;
}; // this == a.lock()->b[B_index].get();
> B内のvectorを要素の状態に応じてソートする
これはstd::sortで行ける。
尤も、ベクタが常にソートされた状態に保たれるって条件にしたいなら挿入ソートの方が計算量が少なくなって良いけどね。
ex)
sort(c1.begin(), c1.end(),
[](const shared_ptr<C1>& e1, const shared_ptr<C1>& e2) {
return compare(e1->get_parameter(), e2->get_parameter());
}
);
0008デフォルトの名無しさん
2016/01/24(日) 13:20:32.74ID:6/siiwPN0009デフォルトの名無しさん
2016/01/24(日) 13:26:35.94ID:efwl3LYy0010デフォルトの名無しさん
2016/01/24(日) 14:29:49.80ID:7wa58CB+何で?
0011デフォルトの名無しさん
2016/01/24(日) 16:17:33.38ID:6/siiwPNAll your base are belongs to us.
これ訳せる?
0012デフォルトの名無しさん
2016/01/24(日) 16:30:11.35ID:7wa58CB+そんな英語を書いちゃうのが怖いってこと?
それとも英語圏だと有名な言い回しか何かってこと?
ごめん、文法詰め込み教育受けた典型的な日本人なんで、訳せないす…
00135
2016/01/24(日) 16:51:59.34ID:0LR1dPfv>最初に結合考えられてない状態で全部オブジェクトが作られてそのあとつながっていくパターンなのか、
最初は何も考えずそうしていました。つまり、全てのオブジェクトをshared_ptrで作っていました。
ただ、前スレの指摘からshared_ptrを意味もなく使うのは駄目だと悟ったので、
ノード間に自明な親子関係があることから、素直に「親が子を作る」ほうがいいかと思いました。
>>7
書き忘れましたが、全てのクラスはインデックスを表すメンバ int index を持っており
これに従ってvectorをソートしたいのでした。
こういう場合shared_ptrやweak_ptrを使うのは悪くないということでしょうか?
0014デフォルトの名無しさん
2016/01/24(日) 18:26:26.83ID:LHp2Xjej最終的に何をやりたいかにもよる。
全てのノードへのポインタをunordered_setで保持して、確保するときは必ずそのunordered_setにinsertし、ノード間は生のポインタを使う
なんて実装も可能で、場合によってはその方が実行速度が速い。
BはA以外からは所有されないのであれば、shared_ptrよりunique_ptrの方が意味的には適切。
0015デフォルトの名無しさん
2016/01/24(日) 18:34:36.48ID:fkWZRTEw挿入が随分とマヌケなコードにならないか?
0016デフォルトの名無しさん
2016/01/24(日) 18:36:18.10ID:fkWZRTEw0017デフォルトの名無しさん
2016/01/24(日) 18:38:12.34ID:LHp2Xjejホントの事いってunordered_setなんぞあんまり使ったこと無いんだけど、大体こんなイメージ
T* my_new(unordered_set<T*>& heap) {
auto t = new T;
heap.insert(t);
return t;
}
0018デフォルトの名無しさん
2016/01/24(日) 18:42:20.30ID:50ZcCt7zそのコードで何か具体的な問題が起こってるのでもなければそれでいいんじゃないの?
問題があるならそこをはっきりさせないと、どう変えようかなんて考えようが無いと思う。
効率を気にしてるだけなら実測して要件を満たすならそれでいいし。
名無しの誰かの主観を満足させたいわけじゃないんでしょ?
0019デフォルトの名無しさん
2016/01/24(日) 19:33:35.42ID:fkWZRTEwスマポをunordered_setに入れるものと勘違いして>>16で撤回した俺がアホだった
やはり初心者にはC++は難しかったようだ
http://ideone.com/NUiLph
0020デフォルトの名無しさん
2016/01/24(日) 21:56:44.58ID:ssnQMLKn有名な間違いだらけの英語
0021デフォルトの名無しさん
2016/01/25(月) 08:20:39.98ID:8HrLEsp2そのunordered_setのvalueは生ポインタじゃなくて最初からスマートポインタでよくない?
あとインデックスあるんだからunordered_map使ったほうがすっきりしそう。まあここは質問者のやりたいこと次第だしそもそも>>14のsetの流れで出てきたものなんだろうけど
0022デフォルトの名無しさん
2016/01/25(月) 10:55:34.57ID:yh3tfuOH{
struct hoge
{
char a;
int b;
};
hoge a;
memset( &a, 0, sizeof( hoge ) );
hoge b = {};
hoge c = hoge();
hoge d = { 0, 0 };
bool e = memcmp( &a, &b, sizeof( hoge ) ) == 0;
bool f = memcmp( &a, &c, sizeof( hoge ) ) == 0;
bool g = memcmp( &a, &d, sizeof( hoge ) ) == 0;
}
efgはそれぞれどういう値になるでしょうか
00235
2016/01/25(月) 11:17:27.48ID:2nNO2C2F問題は全くないです。
ただ、スマポを正しく使えてる自信がなかった中、前スレ>>956等を見てやばいと焦った次第です。
>>14
生ポインタ使うのは正直抵抗があるので今回は見送ります。
unique_ptrは仰る通り使うべきでした。
0024デフォルトの名無しさん
2016/01/25(月) 11:21:09.85ID:aGf3VXDj規格で保証がある範囲を考えれば全部不定になり得るところ。
何が知りたいのかわかんないけど、自分で試せば?
00255
2016/01/25(月) 11:52:15.00ID:2nNO2C2Fhttp://ideone.com/KYia26
修正点は以下です。
・weak_ptrをshared_ptrや参照に置き換えた
・一番親のAはBのリストをshared_ptrからunique_ptrに置き換えた
書いてて思ったのですが、今回のような複数のオブジェクトから参照されるオブジェクトをソートする場合は
スマポあるいは生ポを使う以外方法がないんではないでしょうか?
0026デフォルトの名無しさん
2016/01/25(月) 12:49:17.26ID:MTh5r7jR構造体同士の代入は出来ても比較が出来ないのは、
アラインメントを合わせるためにパディングされている場合があるから。
それを強引にmemcmpで比較したところで、その部分に何が入ってるかが分からないのだから
比較結果は環境依存になる。
つまり、charが1バイト、intが4バイト、アラインメントが4バイトだと仮定すると
struct hoge {char a; int b;};
は
struct hoge {char a; char pad[3]; int b;};
と同じような構造体のマップになる。
んで、memsetで初期化した場合を除けばpadの部分に何が入ってるかが分からないから
e,f,gはtrueにもfalseにもなりうる。
0027デフォルトの名無しさん
2016/01/25(月) 13:24:30.56ID:yh3tfuOH0028デフォルトの名無しさん
2016/01/25(月) 13:32:21.82ID:MTh5r7jR吐かれた機械語読んで、memset系の関数呼んでれば実行環境には依存せず全0になるね。
でもコンパイラに依存するって意味では(ソースコードが)環境に依存してる。
c++のn3337の5.17.9には
an assignment to a scalar, in which case the initializer list shall have at most a single element. The
meaning of x={v}, where T is the scalar type of the expression x, is that of x=T(v) except that no
narrowing conversion (8.5.4) is allowed. The meaning of x={} is x=T().
って書かれてるから、規格上はbとcは見かけ上同じ値になる事になってるけど
vcは標準規格を守ってないので有名だから実際にどうなるかは知らない。
0029デフォルトの名無しさん
2016/01/25(月) 13:42:36.07ID:MTh5r7jR・shared_ptr(new T())はmake_shared<T>()で置き換えられる。
特に、Tのコンストラクタが例外を発生しうるなら常に置き換えるべき。
・vector同士の代入はその時点での配列のコピーになるからvector自体もshared_ptrで管理するべき。
C2にC1のリストを渡した後でC1が更新されると不整合が起こる。
・ラムダ式の引数の型にはauto系が使える。
幾つかの例外を除けば、型名としてはauto&&を使うのが楽。
・計算式に複数の副作用を含むべきではない。評価順序によって値が変わる可能性がある。
・listC2の要素数が1つでない場合にlistC1の更新が誤ったものになっている。
以上をてきとーに直すとこんな感じ。誰か追加の添削よろ
http://ideone.com/AUc7NI
0030デフォルトの名無しさん
2016/01/25(月) 14:44:01.36ID:ZbEt+NlS横からすまん
>>25
>特に、Tのコンストラクタが例外を発生しうるなら常に置き換えるべき。
これなんで?
00315
2016/01/25(月) 15:06:09.85ID:2nNO2C2Fすみません、一点大事なことをいい忘れてました。
BのlistC1はC2のそれとは同じでなく、後者は前者の部分集合で、C2オブジェクト間でlistC1の関連はなく、ソートも必要ないのでした。
いただいたアドバイスを元に改良しました。
http://ideone.com/nog6AP
(いくつかC++14の機能があったので、自分のC++11環境でビルドが通らなくて焦りました)
ところで、以下が分かりませんでした。よければもう少し教えていただけますか?
・計算式に複数の副作用を含むべきではない。評価順序によって値が変わる可能性がある。
・listC2の要素数が1つでない場合にlistC1の更新が誤ったものになっている。
0032デフォルトの名無しさん
2016/01/25(月) 16:14:27.17ID:MTh5r7jRf(new T());
の実行は、
Tの為の領域が確保されて、
Tのコンストラクタが走った後に、
Tにとってのthisがfの為の引数としてスタックに積まれるかなんかして、f関数内で束縛できるようになる。
Tのコンストラクタが例外を投げると、fは走らずに例外がcatchされる。そしてthisが宙ぶらりんになって誰からも開放出来なくなる。
これを防ぐには、領域を確保した後それを何らかの変数に代入して、その後にTのコンストラクタが走るようにコードを書かなきゃならない。
これはplacement newを使うとこう書ける。
t = malloc(sizeof(T)); new (t) T();
で、make_sharedはTのコンストラクタがコケてもちゃんと開放するようにしっかり書いてる可能性が高い。
一方でshared_ptr(new T());だとTのコンストラクタがコケるとメモリリークが起こる。
そういった理由。
0033デフォルトの名無しさん
2016/01/25(月) 16:35:28.74ID:MTh5r7jR> 計算式に複数の副作用を含むべきではない。評価順序によって値が変わる可能性がある。
これは、元コードの
vector<shared_ptr<C1>> l = { b->add_C1(1), b->add_C1(0), b->add_C1(2) };
について言ってて、この場合は(initializer listの場合は)左から順にっつーか出現順に評価される事が仕様で決まってるけど(8.5.4.4より)、
これがただの関数呼び出しの場合、つまり
initialize(l, b->add_C1(1), b->add_C1(0), b->add_C1(2));
みたいに書いた場合には左から順に評価されるとは限らない。だから気をつけてねって話。
> listC2の要素数が1つでない場合にlistC1の更新が誤ったものになっている。
これは元コードの
auto& c2 = b->add_C2(0);
c2->set_listC1(l);
の部分だね。add_C2が1度だけ呼ばれるならこのコードでも問題ないけど、
n回呼ばれうる事を考えるとfor文で全体を括った方が良いんじゃない?ってだけの話。
0034デフォルトの名無しさん
2016/01/25(月) 16:38:44.03ID:3jdDpl0pなんか設計ぶっ壊れてんね
0035デフォルトの名無しさん
2016/01/25(月) 16:50:27.54ID:3jdDpl0p00365
2016/01/25(月) 17:24:17.41ID:2nNO2C2F>ただの関数呼び出しの場合には左から順に評価されるとは限らない
全く知りませんでした。超大事なことですね。
ありがとうございます。
>n回呼ばれうる事を考えるとfor文で全体を括った方が良いんじゃない?
仰る通り、実際の用途ではそうしてます。
00375
2016/01/25(月) 17:37:21.34ID:2nNO2C2Fいえ、クラスの親子関係、およびメンバにコンテナや親への参照(生ポ、スマポ、参照のどれにするかは別として)を持つこと自体は間違いない設計です。
>>35
タイプオブジェクトパターンとは何でしょうか?
デザインパターンにはないようですが、Factoryパターンの一種でしょうか?
0038デフォルトの名無しさん
2016/01/25(月) 18:04:37.05ID:3jdDpl0pれっきとしたデザパタ
http://www.cs.ox.ac.uk/jeremy.gibbons/dpa/typeobject.pdf
つかデータ同士の関連付けすぎじゃね
とりあえずC2、C3が必ずC1を含むなら、
C2/C3を汎化してC1の属性にしてBが持つのC1だけにして
C2、C3の各属性は速度が必要なら、C1用のツリーを汎化して、
C2とC3をBの操作とした方がスッキリすると思うんだけど
もしかしてC3やC2とC1の持つA/Bって別なん?
0039デフォルトの名無しさん
2016/01/25(月) 18:39:25.59ID:6iy9dS6bhttps://ideone.com/xLFO7G
・オリジナルの変数の依存関係と丸出しスタイルはそのまま
・メソッド名とかは一部変えた
・生のポインタだけで運用
・deleteは一箇所で一括に行う
・もっとスッキリすると思ったが書いてみると意外とそうでもなかった
00405
2016/01/25(月) 18:42:58.12ID:2nNO2C2F>れっきとしたデザパタ
GoFのデザパタではないんですね。勉強します。
>とりあえずC2、C3が必ずC1を含むなら、
C3が含むのはC1ではなくC2です。IdeoneではC3は省いていますが。
>もしかしてC3やC2とC1の持つA/Bって別なん?
いえ、同じです。
実際のやりたいコードは2次元の幾何です。もっと早く言うべきだったかもしれません、すいません。
C1が点、C2が点を繋いだ線、C3が線で囲まれる多角形、BやAはそれらの上位のクラス(geometryみたいな名前)です。
0042デフォルトの名無しさん
2016/01/25(月) 19:12:59.35ID:3jdDpl0pんーすまん、それでなんでこの設計になるのかわからん
とりあえずC1から取れるしC2/C3にA/Bのポインタいらないんじゃね
実現したいことがわからないが
幾何の表現なら一次元vectorで十分じゃね
index用vectorでn次元の部分集合の指定もできるし
00435
2016/01/25(月) 20:00:38.31ID:2nNO2C2F>とりあえずC1から取れるしC2/C3にA/Bのポインタいらないんじゃね
それは仰る通りです。
ただ、c2->listC1[0]->refB とC1を辿るのが面倒だったのでC2に持たせてしまいました。
>実現したいことがわからないが
うーん、そんな変でしょうか?
実は幾何の入出力ファイル(他者製)もこのクラスの親子関係そのままのフォーマットになってて、
それをコードでも踏襲したという経緯です。
0044デフォルトの名無しさん
2016/01/25(月) 20:18:32.30ID:MTh5r7jR接触判定でもしたいの?
0045デフォルトの名無しさん
2016/01/25(月) 20:28:56.97ID:qUtW41iVISO/IEC 14882:2014の8.5p6を読む限りパディングはビット0になると読めるのだが不定になると言う根拠は?
0046デフォルトの名無しさん
2016/01/25(月) 20:44:54.74ID:qUtW41iV> hoge d = { 0, 0 };
に限ってはパディングがゼロ梅になるという記述が見つけられなかった
0047デフォルトの名無しさん
2016/01/25(月) 21:14:32.48ID:3jdDpl0p>うーん、そんな変でしょうか?
変っていうかC1,C2,C3が何の表現なのかわからん
0048デフォルトの名無しさん
2016/01/25(月) 21:16:12.13ID:MTh5r7jR確かによく読むと、x={}はx()に等しく、x()はvalue-initializedされて、
user provided constructorが存在しない場合はzero-initializerが走って、
その場合にはpaddingも0になるみたい。
規格準拠を仮定するなら君が正しい。嘘書いてごめんよ。
0049デフォルトの名無しさん
2016/01/25(月) 21:28:05.05ID:3jdDpl0pそんなメガネクイーしてる暇あったら引用すりゃよくね?
>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;
0050デフォルトの名無しさん
2016/01/25(月) 22:02:04.00ID:aGf3VXDj>26 じゃないけど、
構造体のパディングバイトが全ビット 0 になる保証はあるんだけど、
int を 0 に初期化したときにパディングビットも含めて全ビットが 0 になる保証は見当たらないんだ。
パディングビットがある環境も少ないだろうし、あるとしても numeric_limits<int> とか調べれば事前に
有無が確認できるとは思うけど。
0051デフォルトの名無しさん
2016/01/25(月) 22:06:48.30ID:aGf3VXDj> Tのコンストラクタが例外を投げると、fは走らずに例外がcatchされる。そしてthisが宙ぶらりんになって誰からも開放出来なくなる。
...
> 一方でshared_ptr(new T());だとTのコンストラクタがコケるとメモリリークが起こる。
んなこたーない。
http://www.kijineko.co.jp/tech/superstitions/memory-leak-at-dynamic-creation-fail.html
0052デフォルトの名無しさん
2016/01/25(月) 22:11:13.46ID:aGf3VXDj> A *a(int i) {return as.add(new A(i));}
add() の中の push_back() で例外飛んだらリークする。
変な独自コンテナラッパーなんか作らないでおとなしくスマートポインタ使えばいいのに。
0053デフォルトの名無しさん
2016/01/25(月) 22:45:59.01ID:u8HkWBJkこういう誤りによるメモリリークを根絶するため
new自体がソースコード上に現れるのを避けるのが普通
f(unique_ptr<A>(new A), unique_ptr<B>(new B));
ちなみにコンストラクターの例外は関係無い
0054デフォルトの名無しさん
2016/01/25(月) 22:51:40.35ID:MTh5r7jRこれは知らなかった。
それ自身のdtorは走らないみたいだから、fopenしてたり生のポインタ使ってたりすると危ないかも。
http://ideone.com/IOYMAt
0055デフォルトの名無しさん
2016/01/25(月) 22:55:07.69ID:ATEV5j5o> push_back() で例外飛んだら
http://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).
↑これのこと?
0056デフォルトの名無しさん
2016/01/25(月) 22:57:30.92ID:aGf3VXDj00575
2016/01/25(月) 23:27:49.38ID:2nNO2C2F不適切というわけではなさそう(というか自分的にはベストな解)ことが分かり
満足したので、質問を締めさせていただきます。
回答くれた方どうもありがとうございました。
0058デフォルトの名無しさん
2016/01/25(月) 23:46:30.78ID:u8HkWBJkパディングビットの規定を探したら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.』
0059デフォルトの名無しさん
2016/01/25(月) 23:59:58.70ID:aGf3VXDjそんなところ。
Cでも保証は無いよね。あったところでC++で「保証」とはいえないんだけど。
0060デフォルトの名無しさん
2016/01/26(火) 00:41:34.27ID:LScUQqmUとりあえずOpenGLとか触ったほうが良いと思います
0061デフォルトの名無しさん
2016/01/26(火) 00:45:45.80ID:GVbqnwMeなんで?
0062デフォルトの名無しさん
2016/01/26(火) 00:55:25.80ID:LScUQqmUデータ構造が見えてなさそうだから
0063デフォルトの名無しさん
2016/01/26(火) 01:15:04.16ID:88T0+SoFむしろ>>42みたいに全部vectorでやれとかいうほうがおかしい
0064デフォルトの名無しさん
2016/01/26(火) 01:20:06.74ID:LScUQqmU内包させるのは普通じゃないよ
0065デフォルトの名無しさん
2016/01/26(火) 01:25:45.01ID:LScUQqmU>vertexはedgeを、edgeはfaceを、faceはelementを構成するっていうデータ構造はごく普通でしょう
こんなの見たこと無いよ
普通は各々verticesとして持ってるでしょ
0066デフォルトの名無しさん
2016/01/26(火) 01:29:56.87ID:88T0+SoF意味がわからない
elementとかの定義をvertexのリストだけでやるの?
tetraやhexaならいいけどpolyhedronはどうするの?
0067デフォルトの名無しさん
2016/01/26(火) 01:38:32.76ID:usMbn1Xz>63はそういう構造をよく使う、あるいはよく見る。
>65はそういう構造を見たことが無い。
それだけのことなら相手に合意を迫る必要はまったく無い。
同じものを作ってるなら話は認識あわせに意味があるかもしれないけど、
ここじゃアカの他人なんだからそんなこともあるじゃろ、でおしまい。
二人とも、もう寝たほうがいいよ。
0068デフォルトの名無しさん
2016/01/26(火) 01:38:35.41ID:zaDrFWLKOpenGLで表示させるだけなら普通は頂点とインデックス列だけで事足りる
0069デフォルトの名無しさん
2016/01/26(火) 02:02:32.36ID:88T0+SoF自分機械設計屋なんだけど、流体シミュレーションだとpolyhedron要素があるんで
こういうデータの持ち方するのよね
OpenGLは使ったことないっす
0070デフォルトの名無しさん
2016/01/26(火) 02:53:27.61ID:LScUQqmUまあもういいや大した話じゃないし
0071デフォルトの名無しさん
2016/01/26(火) 07:13:49.17ID:8rZ+8lOF0072デフォルトの名無しさん
2016/01/26(火) 07:26:37.18ID:RIXqMqyc0073デフォルトの名無しさん
2016/01/26(火) 13:43:58.10ID:CloTf5dE書き方が悪いんだよな
プログラマの思考と反対というか
elementは複数のfaceで構成され
faceは複数のedgeで構成され
edgeは複数のvertexで構成される
ていう書き方の方がよかったと思われ
0074デフォルトの名無しさん
2016/01/26(火) 15:23:46.68ID:VGU1ghG/いや、表現の問題じゃないでしょw
ちなみに俺はそっちより>>63のボトムアップ的な発想の方が自然
あんまり階層構造つくって持ちまわるよりは
フラットにしたほうが結局ラクなんじゃないかって発想には
俺も個人的には同意する
0075デフォルトの名無しさん
2016/01/26(火) 16:05:26.42ID:MwP9iauOコンストラクタが継承されないこの仕様にはなにか深い訳があるのでしょうか。
多重継承が関係しているような気もするのですが、
そもそも単一継承のJavaも同様の仕様なのでもっと根本的な理由があるのだと思うのですが。
0076デフォルトの名無しさん
2016/01/26(火) 16:07:43.83ID:MwP9iauOhttp://ideone.com/v8QQHq
0077デフォルトの名無しさん
2016/01/26(火) 16:29:07.16ID:uqIl8Fgeサンプル 10 行目の注釈はないものとして
struct X : public Base {
X(int i) : Base::Base(i) {} // 子から間接的に呼び出す必要がある
};
と書くのはいかんの?
Base() だけで自動的に Base::Base() を呼んで欲しいってことかな。
0078デフォルトの名無しさん
2016/01/26(火) 16:39:57.28ID:XdnYao0l呼び出さないで基底クラスのコンストラクタを直接呼び出したい?
そんなこと出来ないのは当たり前なのだが
そんなことしたくなる深い訳の方が気になる
0079デフォルトの名無しさん
2016/01/26(火) 16:40:10.39ID:CloTf5dEただし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; };
さすがにこれは無いか
0080デフォルトの名無しさん
2016/01/26(火) 16:48:50.66ID:XdnYao0lを書くのが面倒くさいということか?
それを自動生成するのは条件を絞れば可能かも知れんが余計に分けわからなくなりそう
008177
2016/01/26(火) 16:51:07.74ID:uqIl8Fge#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;
}
明示的なコンストラクタ呼び出しでなく {} による初期化。
0082デフォルトの名無しさん
2016/01/26(火) 17:13:30.76ID:MwP9iauOそうです、Baseを継承する派生クラスが沢山ある場合が面倒です。
コンストラクタの継承が行われれば、派生クラス側でわざわざ決まりきったコンストラクタを書かずに済むのでコードがシンプルになるなのですが、
それが出来るオブジェクト思考言語は意外と少ないです。
0083デフォルトの名無しさん
2016/01/26(火) 17:37:45.67ID:5mNKNaDjclass B {
public B() {System.out.println(
0084デフォルトの名無しさん
2016/01/26(火) 17:39:33.39ID:JvvEVEHG>>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だと引数無しのときだけチョッと手間省けるね
008584
2016/01/26(火) 17:46:54.81ID:LDY5A4Qlstruct Base {
int i;
Base() : i(0) { cout << ”ok!”; }
};
struct X : public Base {};
これで X x; は普通に行けたねw
0086デフォルトの名無しさん
2016/01/26(火) 17:50:26.64ID:XdnYao0lなるほど。それなら分かるわ
基底クラスのコンストラクタはある意味継承されてるんだけど
protected(ちょっと違うけど)みたいな扱いになってるんだよな
何かキーワードとかであなたの言う意味での継承が出来てもよい気がしてきた
0087デフォルトの名無しさん
2016/01/26(火) 18:41:50.54ID:/Dc76BnU釣りは要らん
その内 コンストラクターの継承も知らないのかバーカバーカ
と言うんだろ?
0088デフォルトの名無しさん
2016/01/26(火) 19:55:14.89ID:XdnYao0lC++11から出来るようになってるね
http://ideone.com/PwOSrY
0089デフォルトの名無しさん
2016/01/26(火) 20:04:25.08ID:yZwoVaS8それで十分に嬉しいように見えるんだけど
using Base::Base;の一行を書くのは>>75的には
「子から間接的に呼び出す必要がある」に該当しないのかな?
あと>>77が何を言っているのか意味不明なの俺だけ?
0090デフォルトの名無しさん
2016/01/26(火) 21:25:05.76ID:I8Y70xN6これってコンストラクタ中から例外飛んで来たらいずれにせよメモリリークするから無駄って解釈でいいの?
この例だとdeleteはされるけど、結局デストラクタが呼ばれるわけじゃないからメンバにポインタ混じっててnewしてたりするとリークするよな
0091デフォルトの名無しさん
2016/01/26(火) 21:52:07.33ID:8rZ+8lOF少しは脳みそ使った方がいいぞ
0092デフォルトの名無しさん
2016/01/26(火) 22:52:14.01ID:IXu06oBBxのデストラクタは呼ばれない(理由は>>91の通り
という言語仕様なのは真実なので、逃げ手としてnewに細工がしてあるだけの話
生のハンドルとかはこれそのものでは救えない。
コンストラクタで生のハンドルを確保するコードを普通に書いたら、コンストラクタが例外を生じたときにリークする
それを避けるための正しいテクニックは、
1) きちんとハンドル(リソース)のwrapperを書いて、
2) そいつをxのメンバにしとく
である(メンバのデストラクタは、xのコンストラクタが例外を生じても呼ばれる
んまー常識的には「コンストラクタで例外を発生させない」とか「例外が発生したら諦める」設計のが
特殊な用途以外では普通な希ガス、
009392
2016/01/26(火) 22:56:25.94ID:IXu06oBBs/コンストラクタ内で例(が|を)発生/コンストラクタから例外をスローさせない/g
コンストラクタ内で例外が発生しそうなところはtry { } catch { }で囲ってしまうのも一つの手ではある
0094デフォルトの名無しさん
2016/01/26(火) 22:58:40.82ID:usMbn1XzRAII の徹底ができていなければリークする可能性が出てくる。
例外の発生がコンストラクタからかどうかはあんまり関係ない。
0095デフォルトの名無しさん
2016/01/26(火) 23:02:54.28ID:RBo8KHcc0096デフォルトの名無しさん
2016/01/26(火) 23:05:13.87ID:8rZ+8lOF一つの関数内で例外安全なコードを書いてればリークは起こらない。
それすら出来ないようでは他の言語を使った方がいい
「コンストラクタで例外を発生させない」と言うのはやや方向性が違っていて
「プログラムを書かなければリークは起こさない」レベルの思考
0097デフォルトの名無しさん
2016/01/26(火) 23:06:58.14ID:zcSlqmoV自己紹介はしなくていいぞ
0098デフォルトの名無しさん
2016/01/26(火) 23:12:32.60ID:I8Y70xN6他のライブラリ使うのはいろんな理由で無理、ライブラリの互換性のために元のソースいじれないってなったら漏れたらあきらめるしかないのか?
0099デフォルトの名無しさん
2016/01/26(火) 23:14:58.68ID:8rZ+8lOF質問しなきゃわからないほど馬鹿なのか
0100デフォルトの名無しさん
2016/01/26(火) 23:22:01.99ID:I8Y70xN6今まさに近い状況になってて、例外飛んでくるのはまた別の原因なんですけど
実際どうすればいいんですか?自分一人だけライブラリ使わないってのはできないんですけど
0101デフォルトの名無しさん
2016/01/26(火) 23:23:01.51ID:CloTf5dEコンストラクタの中でtry-catchして適切にリソース開放すれば良いだけでは?
0102デフォルトの名無しさん
2016/01/26(火) 23:23:51.29ID:4LzhB3JY例外起きたらあとはリソース閉じて終了するだけのことだから
アプリケーションとしては終了に向かうだけだからリークも糞もないんよ
0103デフォルトの名無しさん
2016/01/26(火) 23:27:16.38ID:XdnYao0lライブラリがバグってるならどうしょうもないだろ
>>102
ずいぶんとおめでたい世界にいらっしゃるようで
0104デフォルトの名無しさん
2016/01/26(火) 23:28:08.68ID:sH2SZupb0105デフォルトの名無しさん
2016/01/26(火) 23:28:59.31ID:4LzhB3JYみたいな不思議な連中は一定おるんよ
0106デフォルトの名無しさん
2016/01/26(火) 23:30:11.03ID:8rZ+8lOFおおまかにはそれでよいが
最低限 例外中立にしとくのがマナー
具体的にはfunction-try-blockを使うかthrow;で再スローするかラッパーを使うか
0107デフォルトの名無しさん
2016/01/26(火) 23:30:13.68ID:sH2SZupb0108デフォルトの名無しさん
2016/01/26(火) 23:30:33.16ID:XdnYao0l例外発生するまでに確保済みのリソース
そんな面倒なことにならないようにRAIIの徹底はもう必須だよ
0109デフォルトの名無しさん
2016/01/26(火) 23:31:01.96ID:CloTf5dEデストラクタは走らないけどoperator deleteは呼ばれるからメモリリークしないよ
0110デフォルトの名無しさん
2016/01/26(火) 23:34:08.88ID:TGWAfBDPその通りだよ。
0111デフォルトの名無しさん
2016/01/26(火) 23:38:07.07ID:8rZ+8lOF揚げ足を取ると、走るケースが全くない訳ではない
0112デフォルトの名無しさん
2016/01/26(火) 23:44:41.90ID:usMbn1Xz0113デフォルトの名無しさん
2016/01/27(水) 00:02:05.29ID:zgyqI55Gコンストラクタ内で例外が発生してもコンストラクタ内でキャッチしてしまえば走らない
コンストラクタ内で例外が発生してもコンストラクタ内でキャッチしてしまえば走らない
0114デフォルトの名無しさん
2016/01/27(水) 00:02:50.96ID:zgyqI55G走るの間違いwwwwwwwwww
0115デフォルトの名無しさん
2016/01/27(水) 00:04:30.16ID:0q1DRp6s気持ち悪いけど放っておけ
0116デフォルトの名無しさん
2016/01/27(水) 00:13:07.10ID:zgyqI55Gかつユーザーの立場からリークを阻止する手段が無いというのは
ライブラリのバグと言って過言ではない
0117デフォルトの名無しさん
2016/01/27(水) 00:34:28.52ID:zSFGO6dq0118デフォルトの名無しさん
2016/01/27(水) 00:47:13.92ID:tYkYQITg0119デフォルトの名無しさん
2016/01/27(水) 00:52:40.92ID:0q1DRp6s0120デフォルトの名無しさん
2016/01/27(水) 01:45:10.90ID:zgyqI55Glongjump()か例外をthrowするかして大域脱出すると良い
ID:I8Y70xN6が。
0121デフォルトの名無しさん
2016/01/27(水) 02:00:29.05ID:gidaw1Ah何も難しいことなんてないじゃない。
0122デフォルトの名無しさん
2016/01/27(水) 03:05:27.95ID:3jiwec3Bなるほどな
ちなみにコンストラクターから例外が漏れた場合でもデストラクターは走る事がある
struct A {
A() {}
A(int) : A() {throw 0;}
~A() {}
};
int main() {
A a{0};
}
0123デフォルトの名無しさん
2016/01/27(水) 06:38:25.30ID:oAun2w+9つ初期化子
0124デフォルトの名無しさん
2016/01/27(水) 07:11:47.54ID:3jiwec3B初期化しがどうかしたか?
カタコトではただのアスペだぞ
0125デフォルトの名無しさん
2016/01/27(水) 07:34:44.55ID:T1kNk2gLそれはそのクラスが内部で処理することであってユーザーは何を解放するんだよ
0126デフォルトの名無しさん
2016/01/27(水) 08:01:41.14ID:7tk5IOS70127デフォルトの名無しさん
2016/01/27(水) 10:47:19.58ID:oAun2w+9コンストラクタ初期化子
0128デフォルトの名無しさん
2016/01/27(水) 12:30:07.60ID:eULyfEEH>それはそのクラスが内部で処理することであって
ずっとその話なのだが
0129デフォルトの名無しさん
2016/01/27(水) 12:56:11.97ID:zSFGO6dqコンストラクタ内でtry-catchできない
やっぱりコンストラクトでの例外はまずいんじゃないか?
0130デフォルトの名無しさん
2016/01/27(水) 13:59:04.99ID:oAun2w+90131デフォルトの名無しさん
2016/01/27(水) 17:48:02.83ID:gidaw1Ah初期化しきれたクラスはデストラクタが呼ばれ、初期化できなかったクラスは内部でcatchしてエラー処理して再送するだけ。
やっぱ単純だよ。
我らがMeyer先生はなんて言ってるの?
0132デフォルトの名無しさん
2016/01/27(水) 18:08:44.32ID:7tk5IOS7できないと判断した根拠は?
http://ideone.com/WlFMej
>>131
メイヤー「ワシ、ちょっとC++引退するわ」
0133デフォルトの名無しさん
2016/01/27(水) 18:10:24.29ID:7tk5IOS7誤
try m{}, x{}
正
try : m{}, x{}
0134デフォルトの名無しさん
2016/01/27(水) 18:15:50.95ID:7tk5IOS7荒らしは去れ
0135デフォルトの名無しさん
2016/01/27(水) 18:45:02.79ID:oAun2w+9コンストラクタ初期化子に書くメンバーが初期化はコンストラクタのスコープ内部じゃない。
自作クラスだったら君の言うように内部catchすればいいけど他作クラスで例外をthrowするタイプだtry-catchで囲めない。
0136デフォルトの名無しさん
2016/01/27(水) 18:49:38.11ID:oAun2w+9まさか14以降を前提にしてるなんて言うまい?
0137デフォルトの名無しさん
2016/01/27(水) 19:31:29.47ID:3jiwec3Bお前はコンストラクター初期化子や例外という言語機能がC++14以降だとでも言いたそうだな
どれだけ勉強不足なんだ
0138デフォルトの名無しさん
2016/01/27(水) 19:39:57.53ID:6XO7CsMP初期化リストつったらコンストラクタのパラメータのカッコの横の
クラス名(引数) : この部分 {}
を言うんだよな?
駆け出しの頃にC++プライマーとかいう分厚い本で学んだときは
たしかこうだったはずなんだが
std::initializer_listの出現で落ち着かない気持ちになってきてる
0139デフォルトの名無しさん
2016/01/27(水) 19:53:14.68ID:3jiwec3B(中略)
>を言うんだよな?
いやまずそこから違う
0140デフォルトの名無しさん
2016/01/27(水) 20:04:51.00ID:1b0Lj9r30141デフォルトの名無しさん
2016/01/27(水) 20:41:04.94ID:aFoLhF8Mとんくす!
↓少し学んだ
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
0142デフォルトの名無しさん
2016/01/27(水) 20:44:21.08ID:gqKHFo+Sだから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
0143デフォルトの名無しさん
2016/01/27(水) 21:00:23.97ID:zSFGO6dqあなたのおっしゃる通りです。いい加減なこと言ってごめんなさい魔が差しましたw
やはり大事なのはRAIIの徹底ですね
0144デフォルトの名無しさん
2016/01/27(水) 21:08:05.10ID:oAun2w+9えっ?
初期化子までtry説に含めるのはC++11ではできないって言いたいだけなんだけど?
0145デフォルトの名無しさん
2016/01/27(水) 21:09:24.27ID:oAun2w+9○try節
0146デフォルトの名無しさん
2016/01/27(水) 21:10:04.69ID:0xRCKJUw0147デフォルトの名無しさん
2016/01/27(水) 21:13:01.64ID:1b0Lj9r3ああ、構文規則の非終端記号名のmem-initializer-listと混同していたのか。
0148デフォルトの名無しさん
2016/01/27(水) 21:16:28.24ID:3jiwec3BISO/IEC 14882:1998 15p1 8行目
ISO/IEC 14882:2003 15p1 8行目
ISO/IEC 14882:2011 15p1 8行目
ISO/IEC 14882:2014 15p1 8行目
これのどこを読んだらいったいそんな嘘が出てくるのか
0149デフォルトの名無しさん
2016/01/27(水) 21:19:58.24ID:hY0OCllE0150デフォルトの名無しさん
2016/01/27(水) 21:23:34.50ID:zSFGO6dq俺はあなたに釣られちゃったけどこれが真実です
http://ideone.com/rVg5CP
0151デフォルトの名無しさん
2016/01/27(水) 21:26:16.20ID:Qr5LJlmv0152デフォルトの名無しさん
2016/01/27(水) 21:27:35.65ID:3jiwec3BC++14の結果のようだが
コミュ障は去れ
0153デフォルトの名無しさん
2016/01/27(水) 21:28:27.16ID:oAun2w+9えっえっ?!?!
今の今まで「14になったら使える機能か楽しみだ」と思ってた...
0154デフォルトの名無しさん
2016/01/27(水) 21:30:40.94ID:hs0c0BKxそこは突っ込むのが正解なのかw
なんか深遠な理由があるのか
高度な釣りなのかわかりかねたわ(>>144に対してC++14の結果貼り付け)
0155デフォルトの名無しさん
2016/01/27(水) 21:33:45.85ID:0q1DRp6sもしかしてメンバイニシャライザのこと?
0156デフォルトの名無しさん
2016/01/27(水) 21:36:46.74ID:0q1DRp6sExceptional C++に出てくるぐらいにはメジャーだったはずだぞ
0157デフォルトの名無しさん
2016/01/27(水) 21:40:42.54ID:3jiwec3Bそれはですね
狡猾な>>140が初期化子リストとメンバー初期化子とコンストラクター初期化子を混同した>>138を惑わすために出した用語なんです気にしないで
ちなみに規格ではnew A(100)とかの『(100)』の部分を指します
0158デフォルトの名無しさん
2016/01/27(水) 21:40:46.23ID:5WlKM79a> メンバイニシャライザ
それちなみにどこで習ったの?
どこの流儀?
0159デフォルトの名無しさん
2016/01/27(水) 21:42:32.38ID:zSFGO6dqはあそんなところに突っ込まれるとはw
>>153
あなたはC++14でもだめでC++17になったら出来るかもって思ってたでしょw
0160デフォルトの名無しさん
2016/01/27(水) 21:43:28.66ID:oAun2w+9>>156
持ってるけどそんな記述あったかな?
0161デフォルトの名無しさん
2016/01/27(水) 21:43:53.84ID:3jiwec3B>>141を100回読み直してこい
0162デフォルトの名無しさん
2016/01/27(水) 21:45:04.77ID:0q1DRp6s流儀?
メンバ変数の初期化を行うのはmember initializerだぞ
0163デフォルトの名無しさん
2016/01/27(水) 21:46:53.21ID:gqKHFo+S> 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.
0164デフォルトの名無しさん
2016/01/27(水) 21:47:25.50ID:0q1DRp6sお前絶対読んでないだろw
0165デフォルトの名無しさん
2016/01/27(水) 21:48:01.49ID:VHRBi97oごめんごめん、純粋に何でその名前を学んだか知りたかっただけ
上でも書いたけど俺はC++プライマーって本を読んで学んだんだけど
たしかそれは 初期化リスト って書いてあったはずなんだ(多分)
だからみんなソレをどこで学んで何と呼んでるのか気になっただけ
0166デフォルトの名無しさん
2016/01/27(水) 21:49:15.00ID:oAun2w+9鬱だ
0167デフォルトの名無しさん
2016/01/27(水) 21:51:52.82ID:zSFGO6dqごめん
その点は危ういと思ったけどGCCだと取り敢えず意図通りになってたから
話の本筋的にはどうでもいいと思っちゃった
0168デフォルトの名無しさん
2016/01/27(水) 21:52:17.67ID:0q1DRp6s0169デフォルトの名無しさん
2016/01/27(水) 21:52:25.06ID:3jiwec3Bそういやそんな決まりがあったな
すっかり忘れてた
0170デフォルトの名無しさん
2016/01/27(水) 21:54:30.71ID:oAun2w+9安心した。ありがとう。
俺が持ってるのは2000年11月15日発行とある。
みなさん、すいませんでした。
0171デフォルトの名無しさん
2016/01/27(水) 21:54:40.52ID:88/bqypu1ページも読んだことないわ
0172デフォルトの名無しさん
2016/01/27(水) 22:01:47.89ID:0q1DRp6sMoreも2001年なんだから安心するなよw
その頃からメジャーどころは載ってたはずだ
0173デフォルトの名無しさん
2016/01/27(水) 22:10:37.63ID:0q1DRp6sあまり意識したことはないので
恐らくコンパイラのメッセージだな
規格も読んだが後付けだと思う
0174デフォルトの名無しさん
2016/01/27(水) 22:13:35.94ID:oAun2w+90175デフォルトの名無しさん
2016/01/27(水) 22:15:41.80ID:jBJgujTM> 恐らくコンパイラのメッセージだな
なるほどなるほど!
こういうレスをついにもらえて俺喜んでる
0176デフォルトの名無しさん
2016/01/27(水) 22:27:11.15ID:vltUk2i7記憶でレス→お前バカか→バカはお前→証拠だオラ→悪ぃ悪ぃw
これが挨拶みたいなもん。
一度した発言は曲げてはならないという。
0177デフォルトの名無しさん
2016/01/27(水) 22:35:48.89ID:zgyqI55G記述量の割に得られる対価が例外に対する備えだけ、
というのが気に入らない
RAIIなプログラムのメモリ消費量はなかなか安定に達しないから(∵確保したり開放したりで断片化が進んだり治まったり、
意図とはうらはらに、実は第三者に対してメモリリークが無いことの証拠提示がヒジョーに厄介なプログラムになってしまったりする
0178デフォルトの名無しさん
2016/01/27(水) 22:45:20.30ID:gqKHFo+S隙だらけすぎるだろ。
> 記述量の割に得られる対価が例外に対する備えだけ、
基本的なところは標準ライブラリでカバーされてるんだけど、記述量ってどんなコード想定してんの?
それに、例外以外にreturnやbreakにも利くよ。
> RAIIなプログラムのメモリ消費量はなかなか安定に達しないから(∵確保したり開放したりで断片化が進ん
確保解放のパターンがRAIIで規定されるわけないし、使い方でどうにでもなるでしょ。
> 意図とはうらはらに、実は第三者に対してメモリリークが無いことの証拠提示がヒジョーに厄介なプログラムに
RAII使わない、生でdeleteやらなんやら書いてるコードよりはマシでしょ。悪化する例があるなら見たい。
0179デフォルトの名無しさん
2016/01/27(水) 22:49:16.44ID:zSFGO6dq?それはおかしな見解だな
RAIIを徹底するほうが記述量も少なくなる(delete書かなくて済むんだから)し、
メモリリークが無いことも遥かに容易に証明できると思うが?
それで納得しない第三者なんて頭が腐ってるんだから相手にするだけ無駄
断片化については直接new、deleteするのと変わらないし
0180デフォルトの名無しさん
2016/01/27(水) 22:55:49.88ID:zgyqI55Gいちいちstd::shared_ptr<T>とか打ちたくないし、pSomeSmartPtr.get()ですらちょっと嫌
メモリ直接ならまだ標準ライブラリでカバーされるが、OSがハンドルを返す場合はwrapperを書かねばならない
そしてコンストラクタが例外をスローするのに処置しようとしたら、
漏れの無いtry { } catch { }を書くか、メンバ変数を全部wrapperかスマポにせねばならない
これは苦行以外の何者でもない
そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする
returnやbreakについては、例外と違って伝統的な書き方で対処可能
例外はスマポとか、try { } catch { } みたいな仕掛けが要る
0181デフォルトの名無しさん
2016/01/27(水) 22:56:07.86ID:3jiwec3Bトータルの記述量の話にすり替えとはこれ如何に
0182デフォルトの名無しさん
2016/01/27(水) 22:59:19.51ID:zgyqI55G>そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする
この危険性についてコードを見るだけで検証完了という信じる方がよっぽどキチ
同じコードを見る話なら、固定長の配列の方が安心できる
0183デフォルトの名無しさん
2016/01/27(水) 23:00:49.72ID:0xRCKJUw0184デフォルトの名無しさん
2016/01/27(水) 23:04:15.53ID:zgyqI55Gもちろんナマポも極力使わない
やっても関数内で確保したやつを関数を抜けるとき全部開放する使い方のみとしたい(この用途にはstd::unique_ptr<T>を使ってやっても良い
この構造に統一するなら、メモリの断片化は生じない(まあだれか一人がしくじれば…というのは同じだが
0185デフォルトの名無しさん
2016/01/27(水) 23:07:10.32ID:zSFGO6dqせいぜい頑張って下さい
0186デフォルトの名無しさん
2016/01/27(水) 23:08:36.16ID:3jiwec3B文脈を考慮して読み解かなくても局所的なコード確認の積み重ねのみで全体に漏れがないことを保証できるのがRAIIだと思っていたのだが…
0187デフォルトの名無しさん
2016/01/27(水) 23:13:29.29ID:zgyqI55GRAIIで確保したり開放したるするメモリがスレッド固有という保証が無い限り、
確保や開放の度に排他制御が行われる
スタック上にとられた配列がペナルティーゼロであることを鑑みれば、
InterlockedIncrement()ですら塵も積もれば巨大なコスト足りえる
0188デフォルトの名無しさん
2016/01/27(水) 23:18:25.90ID:zSFGO6dq0189デフォルトの名無しさん
2016/01/27(水) 23:20:30.30ID:eULyfEEH言っていることがよくわからないね
shared_ptrのコストが気になるならnewせずに
スタック上に確保するなりなんなりすればよいだけだろうに
そっちの方が正統派のRAIIだというのに何を言っているのだろうか
まったくお門違い
むしろスタック上にオブジェクトを確保できる言語の方が珍しくて
C++ではそれができるだけでも有り難いというのに
0190デフォルトの名無しさん
2016/01/27(水) 23:20:47.91ID:I7Q8DIXYをはっきりさせようと、本で調べ物をしてたら、「プログラミング言語 第3版」よりも、
「C++ Primer 改訂3版」のほうが、はっきりと疑問に答えてくれると感じた。応用で検討
していることが可能になるか、それとも無理かをすぐに結論を出してくれるみたいな。
もう一方の本は、ストラウストラップ流のプログラム技術の英知を読者に提供しようとは
してるようだけど、仕様で細かいところを素早く確認するのはまだ物足りないかもしれな
いな。
0191デフォルトの名無しさん
2016/01/27(水) 23:21:41.35ID:3jiwec3B確保や開放の度に排他制御が行われる
>スレッド固有という保証が無い限り、
確保や開放の度に排他制御が行われる
>スレッド固有という保証が無い限り、
確保や開放の度に排他制御が行われる
ひょっとしてRAII=shared_ptrとでも勘違いしたのだろうかこの馬鹿は 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0192デフォルトの名無しさん
2016/01/27(水) 23:26:34.20ID:I7Q8DIXYこの本はC++11のようで、編集が一歩遅れてるという印象は否めない。
読者はC++14準拠の第5版を望んでるかもしれないな。
0193デフォルトの名無しさん
2016/01/27(水) 23:27:07.17ID:0q1DRp6s>記述量の割に得られる対価が例外に対する備えだけ
さすがにこれはないわなあ
今更RAII無しでlockとか絶対使いたくない
0194デフォルトの名無しさん
2016/01/27(水) 23:47:08.39ID:0q1DRp6s0195デフォルトの名無しさん
2016/01/27(水) 23:47:41.22ID:tYkYQITg0196デフォルトの名無しさん
2016/01/27(水) 23:52:26.77ID:gqKHFo+S10年ぐらい前にはこんな爺さんがよく居たもんだが、まだ居るのか・・・。
> いちいちstd::shared_ptr<T>とか打ちたくないし、pSomeSmartPtr.get()ですらちょっと嫌
慣れる。どうしても嫌なら好きに using でもしとけばいい。 get() なんて使わんでいい。
> メモリ直接ならまだ標準ライブラリでカバーされるが、OSがハンドルを返す場合はwrapperを書かねばならない
自分で書くケースがあるのはそうだが、稀だろ。
稀じゃないなら、個別に破棄処理を漏れなく書いて回るよりも一度書けば済むRAIIのほうがマシ。
> メンバ変数を全部wrapperかスマポにせねばならない
> これは苦行以外の何者でもない
std::shared_ptr<T>が打てない状況ならそうかもしれないな。
でもそれは個人的な事情であってRAIIの問題じゃない。
> そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする
RAII関係ない。
> returnやbreakについては、例外と違って伝統的な書き方で対処可能
伝統的で且つ面倒な書き方でな。RAIIのほうが楽。
0197デフォルトの名無しさん
2016/01/27(水) 23:54:32.28ID:0q1DRp6s古いのは確かだがまだ十分使えると思うね
他に初心者用の良い本があれば別だけど
0198デフォルトの名無しさん
2016/01/27(水) 23:57:30.71ID:0q1DRp6sそれを全部書き下せる自身があるならどうぞ
0199デフォルトの名無しさん
2016/01/28(木) 00:38:12.26ID:5VmqP1pO絶望した!
>>135
いやいや、初期化子に並んでるクラスまでtryで囲む必要ないでしょ?
彼らは彼らで後始末するのだから。
自分の後始末せずに例外投げるクラスがいたら、どんな手段を使ったって後始末できないよ。
コンストラクタに限る問題じゃない。
0200デフォルトの名無しさん
2016/01/28(木) 01:13:22.83ID:9zxCdjKY後始末したあと例外を投げて来るやつをcatchするんじゃない?
0201デフォルトの名無しさん
2016/01/28(木) 06:48:43.02ID:OteWNMPZライー? ラッツー?
0202デフォルトの名無しさん
2016/01/28(木) 07:29:19.73ID:y2I8o1dH0203デフォルトの名無しさん
2016/01/28(木) 07:37:04.01ID:WeC7vVSZ0204デフォルトの名無しさん
2016/01/28(木) 07:41:40.98ID:y2I8o1dHcatch(...)
0205デフォルトの名無しさん
2016/01/28(木) 08:26:24.97ID:5VmqP1pO言葉足らずですまんが、自分が言及した自分自身の後始末っていうのはそのクラス内部の後始末のこと。
ハードを止めるとかメンバのメモリ開放とか。
使う側のクラスは後始末しないクラスの内部のことなんてわからないから、どんな手段を使ったってそのクラスの後始末はできない。
だから、そんなクラスがいることを前提として議論するのはおかしいってこいいたかったわけ。
そのクラスの提供者に直してもらうしかない。
0206デフォルトの名無しさん
2016/01/28(木) 08:35:58.09ID:9zxCdjKYそれは正しいが、そこが論点じゃないと思う。
コンストラクタ内でエラーが起きたとき、「後始末はちゃんとやったあと例外をthrowする」クラスに
対処することを想定してる。
0207デフォルトの名無しさん
2016/01/28(木) 08:51:24.46ID:5VmqP1pO対処する必要なんてあるの?
繰り返すけど、
初期化子で構築完了したクラスはデストラクタで後始末されて、例外吐いたクラスも自身のtrycatch再throwで後始末してるんだぜ?
親側自身の雑多な初期化処理は始まってもいない。
…と書いてみたが、自分が間違ってるわ。
これで対応できない例外シチュもあり、そんな場合は個別対応すればよいだろうとは思ってたけど、例外とは呼べないほどそんな場面は多い気がしてきた。
0208デフォルトの名無しさん
2016/01/28(木) 09:29:37.28ID:ptM8I7fQ「これで対応できない例外シチュ」ってどんなの?
0209デフォルトの名無しさん
2016/01/28(木) 11:10:21.47ID:5VmqP1pOdispose()とかclose()みたいな関数を呼んでやらないと終了処理できないやつ。
0210デフォルトの名無しさん
2016/01/28(木) 11:21:23.95ID:ptM8I7fQfclose や fstream みたいな、能動的操作処理と破棄処理が不可分になってるもののことかな。
そういうクラスをメンバを持つクラスのコンストラクタで例外が出たとした場合に行う「個別対応」って、
たとえばどんなの?
デストラクタが最低限の処理をしてくれてれば何もしなくていいケースがほとんどだと思うんだけど。
0211デフォルトの名無しさん
2016/01/28(木) 13:13:16.79ID:5VmqP1pO終了処理がsendfinとかwaittimeoutとかだったりしたら、デストラクタで勝手にやられたら困らね?
非対称的に終了処理関数が用意されてることも少なくないと思う。
バグなら直せと言えるけど、設計いけてないから直せとはなかなか要求しにくい。
0212デフォルトの名無しさん
2016/01/28(木) 13:56:52.11ID:tIrgtpz+ファイル操作をオブジェクトの寿命で扱うのって大掴みすぎねぇ?
だからコンストラクタやデストラクタでそんなもんの例外までに話が至っちまう
書き込む瞬間、読み無瞬間だけ一瞬だけファイルを開けや
そこまではバッファに書きこんどけや糞ども
0213デフォルトの名無しさん
2016/01/28(木) 14:51:57.24ID:Fy8z7rZ+RAIIと例外を背反と考えてる人がいる
0214デフォルトの名無しさん
2016/01/28(木) 19:35:11.13ID:CFwd7jm1ログライブラリを開発しているのですが
一瞬だけ開くようにすると処理時間が100 倍以上
になって困っています。
どうすればよいですか?
0215デフォルトの名無しさん
2016/01/28(木) 19:59:05.52ID:9zxCdjKYファイル書き込みオブジェクトをファクトリ関数経由で
一時オブジェクトとしてしか生成できないようにしたことがある。
書き込んだらすぐデストラクタが走るのさ。
0216デフォルトの名無しさん
2016/01/28(木) 19:59:21.20ID:D7v4IB1O0217デフォルトの名無しさん
2016/01/28(木) 20:01:49.04ID:VbpHGgsrkwsk
0219デフォルトの名無しさん
2016/01/28(木) 20:11:54.15ID:D7v4IB1O0220デフォルトの名無しさん
2016/01/28(木) 21:05:31.79ID:DYq8nyhg0221デフォルトの名無しさん
2016/01/28(木) 23:03:17.58ID:iP985GXo0222デフォルトの名無しさん
2016/01/28(木) 23:07:22.96ID:YmAPLaNv糞コテ=馬鹿 で決まり
0223デフォルトの名無しさん
2016/01/28(木) 23:11:59.87ID:iP985GXoデバッグレベルならprintf()して何か条件を満たしたらfflush(stdout); throw;、が最強
0224デフォルトの名無しさん
2016/01/28(木) 23:17:33.09ID:Fy8z7rZ+>ログメッセージを複数スレッドから単一のコンソールに出す場合はcerrよりcoutの方がメッセージの1行同士が混ざる危険性が目に見えて減る
気のせいだろ
マルチスレッドなら、素直に同期したほうが良いぞ
0225デフォルトの名無しさん
2016/01/28(木) 23:50:40.02ID:ptM8I7fQその困る場合の「対処」の例が聞きたかった。
デストラクタに嫌な終了処理が埋まってて困るという場合は対処のしようも無い
=結局何もしなくていいんじゃないの?
それで実用上の問題があるなら直せと言えるはず。
コンストラクタで例外が飛んだってことは問題の終了処理を持つオブジェクトを使って
やろうとしてた処理全体は失敗したわけで、正常処理の締めに必要な
終了処理( fstream で close() とか)の明示的呼び出しも必要ないことが多いだろうし。
0226デフォルトの名無しさん
2016/01/29(金) 19:24:04.25ID:dpjhh/AA> > A *a(int i) {return as.add(new A(i));}
> add() の中の push_back() で例外飛んだらリークする。
これはpush_back()出来なかった分をケアしてやればおk?
https://ideone.com/s4ibLz
・天然のstd::bad_allocは得られなかったので誤魔化した
0227デフォルトの名無しさん
2016/01/29(金) 21:58:56.14ID:V57FZVNV↓こんなんでいいだろ
v.reserve(v.size() + 1);
v.push_back(new Fuck);
0228デフォルトの名無しさん
2016/01/29(金) 22:53:49.61ID:tuK26dsCブログラミングを種に喧嘩ばかりしてるやつって何なの
チンパンジーなの?
0229デフォルトの名無しさん
2016/01/29(金) 23:21:25.56ID:q1Jl0W+Y誤爆か?
0230デフォルトの名無しさん
2016/01/29(金) 23:29:27.61ID:HWJSMXKPそんな意味不明なreserveする奴が偉そうなこと言っても
0231デフォルトの名無しさん
2016/01/29(金) 23:35:27.84ID:ASWZHNV8おじいちゃん、「おとなしくスマートポインタ使えば」おkだっていったでしょ。聞こえてる?
0232デフォルトの名無しさん
2016/01/29(金) 23:52:06.13ID:Hpd/92hjいや意味が全く無いわけではない
std::vector::push_back()呼び出し時点での余分な領域確保とか、速度低下が最小化される
0233デフォルトの名無しさん
2016/01/30(土) 00:09:33.50ID:VhIzDspW230 じゃないけど、 >227 の reserve() で「速度低下が最小化される」なんてことは無いでしょ。
単発なら変わらないだろうし、ループした場合は reserve() しないほうが速いし。
0234デフォルトの名無しさん
2016/01/30(土) 00:17:51.94ID:lYkNZO2mないない
push_backで領域が足りなければreserve相当のことは自動的にされるし
まあないだろうがstd::vectorの実装によってはsize()+1のreserveが速度に悪影響与えることだってあり得るんじゃないかな
>>227のもう一つ痛いところはreserveさえしておけばpush_backでの例外が無いと決めつけてるところ
そんな規定はないだろ?
0235デフォルトの名無しさん
2016/01/30(土) 00:21:53.24ID:nKxSIfYZ> push_backでの例外が無いと決めつけてるところ
というより、それを一切考慮してない希ガスw
そいつ一人だけ問題の本質に到達できていない
bad_allocが投げられるのは一緒ってことも知らないんだろうし
0236デフォルトの名無しさん
2016/01/30(土) 00:55:16.18ID:GfziY5060237デフォルトの名無しさん
2016/01/30(土) 03:14:53.57ID:HpDJFp9+漏れは慎重に「std::vector::push_back()呼び出し時点での」と限定して書いたで?
0238デフォルトの名無しさん
2016/01/30(土) 05:43:02.21ID:VhIzDspWん?だから何?
push_back() 関数内での領域確保・実行時間を減らして、それらを push_back() の
直前の処理に移動することに何か意味があるとでもいうの?それはどんな場合にうれしいの?
0239デフォルトの名無しさん
2016/01/30(土) 05:59:47.15ID:GfziY506「〜される」
B「そんなことは ない」
A「そんなこと ある だろ」
B「だから何?〜だと何かいいことあるのか?」
>>232の2つの文のどちらについて話をしているのかの認識がずれていることに気付かない低能どもの会話は滑稽だな
0240デフォルトの名無しさん
2016/01/30(土) 06:17:44.28ID:GfziY506メモリ確保のnew/deleteは禁止にしてスマポとコンテナーだけ使っとけ
ついでに馬鹿はshared_ptrも使用禁止にしといた方が安全
0241デフォルトの名無しさん
2016/01/30(土) 11:02:01.65ID:u8r8Wxi4> v.push_back(new Fuck);
やっぱり馬鹿にC++は無理だなw
push_backの直前で+1サイズのreserveとかw
http://www.cplusplus.com/reference/vector/vector/reserve/
ここのExampleみてお勉強しなおしたら?
例外投げるのも書いてくれるから学んどけよ
0242デフォルトの名無しさん
2016/01/30(土) 11:46:11.52ID:GfziY506push_backはcapacityに余裕が有るときに再アロケーションしないことは保証されているが
例外を出さない保証は23.3.6.5から読みとれないな
やはり馬鹿にはスマポを強制したほうがいい
0243デフォルトの名無しさん
2016/01/30(土) 13:13:55.69ID:VK1fBsAoreserve()とpush_back()のどちらで例外が発生するかという文脈において、
>>227のreserve()がpush_back()の直前行であるという解釈は一体…
まあv.reserve(v.size() + n);ならともかく、v.reserve(v.size() + 1);だったから気持ちはわからんでもない
0244デフォルトの名無しさん
2016/01/30(土) 14:18:45.97ID:GfziY506何を言ってるんだお前は
0245デフォルトの名無しさん
2016/01/30(土) 15:00:28.25ID:9j1RlcoP0246デフォルトの名無しさん
2016/01/30(土) 16:17:33.41ID:GfziY506挿入前に拡張すると(要素のコンストラクター以外では)例外が出ないという保証はある?
0247デフォルトの名無しさん
2016/01/30(土) 16:22:43.98ID:AurOqJPwCとなら関係あるかも知れないが、プログラミング言語でないC。
もちろん俺の読み違いかもしれない。
0248デフォルトの名無しさん
2016/01/30(土) 16:27:26.60ID:7MlWNObS☆一行のとき
v.push_back(foo); // ここで例外
☆二行のとき
v.reserve(v.size() + 1); // ここで例外
v.push_back(foo);
こうなるだけじゃないの?
新たな連続した一本のメモリが確保できないと例外なんだから
0249デフォルトの名無しさん
2016/01/30(土) 16:35:52.43ID:lYkNZO2m規格を読んだ限り保証はされてないね
現実に存在する実装ではreserve済みであれば生ポのpush_backじゃ例外発生しないだろうけどね
そんなことはアテにしちゃいけない
0250デフォルトの名無しさん
2016/02/01(月) 01:01:58.63ID:CuJD672cnewを一旦別の変数で受けるしかないでしょ
hoge h;
h = new hoge;
vec.push_back(h);
が正解。
0251デフォルトの名無しさん
2016/02/01(月) 01:58:17.63ID:fnCrDph6バカはnewを書くな!
0252デフォルトの名無しさん
2016/02/01(月) 02:09:31.02ID:CuJD672cあんたバカバカ言ってるけどnewを使うかmake_sharedを使うかはこの問題の本質じゃないから。
馬鹿じゃないならわかるよね?
0253デフォルトの名無しさん
2016/02/01(月) 02:22:38.94ID:dRJvSEmLvec.push_back( new t() )
の場合、newで例外が発生したらpush_backは実行しないんだから関係ないと思うんだが
push_back呼ぶ前の、スタックに引数を積む段階で例外が発生するわけだから
push_backは呼ばれもしないし、全く関係ないと思うんだが
0254デフォルトの名無しさん
2016/02/01(月) 02:25:49.77ID:fnCrDph6あなたが問題の本質を理解してると思えないが?
newを変数で受けたってなにも変わりはしないよ
てか、まずはhoge* hにしてから言ってくれない?
0255デフォルトの名無しさん
2016/02/01(月) 05:14:31.96ID:yDMVnQCY0256デフォルトの名無しさん
2016/02/01(月) 06:43:17.15ID:JTo/Q0C3C++の教科書にある間違ったコードのテンプレのような糞コードを真顔で言い出す低能を見ると
やはり馬鹿にはスマポとしか言いようがない
0257デフォルトの名無しさん
2016/02/01(月) 17:11:12.73ID:Ev74Df4FJavaでは普通、ネイティブリソースはRAIIで開放するぞ
0258デフォルトの名無しさん
2016/02/01(月) 17:14:07.57ID:/UrjTotH0259デフォルトの名無しさん
2016/02/01(月) 17:59:52.82ID:fnCrDph60260デフォルトの名無しさん
2016/02/01(月) 18:03:33.95ID:JTo/Q0C3>>259のオツムがフットーしてしまうのも致し方ない
0261デフォルトの名無しさん
2016/02/01(月) 19:47:56.26ID:FCPkKuCGnewしたままdeleteしねぇ糞ソース大量生成しやがる
0262デフォルトの名無しさん
2016/02/01(月) 20:09:02.04ID:qjT3Q9+KJava厨は犬派で、C++厨は猫派だからな
newと鳴いたら、deleteるからな
0263デフォルトの名無しさん
2016/02/01(月) 20:24:37.67ID:ZBzDFClpこういう喩え話って、短い文章中に多くの情報が込められてるものだが。
無粋を承知でお願いします。解説してください。
0264デフォルトの名無しさん
2016/02/01(月) 20:42:15.43ID:aUqGS129Java 厨に生ポなんて使わせるお前が狂ってる
0265デフォルトの名無しさん
2016/02/01(月) 20:46:33.11ID:qjT3Q9+K深い意味は無いよ
C/C++やるときはnewしたらdeleteせよ!って鉄則でしょ
ニャー(new)と鳴いたら、必ずデレてる(deleteる)からC++厨は猫派
単なるダジャレだよw
0266デフォルトの名無しさん
2016/02/01(月) 20:51:56.51ID:JTo/Q0C3低能のお前にはわからないかも知れないが
そんなことはない
0267デフォルトの名無しさん
2016/02/01(月) 21:00:17.78ID:fOHJkiXU自分が人間より上だと思ってるのでデレることはない
0268デフォルトの名無しさん
2016/02/01(月) 21:32:50.64ID:JTo/Q0C3ジャバ厨とレッテルを貼るのではなく、たまたまソイツが低能だからということに気付くべき
Javaでもリソース開放は行うし、C++スレにも>>250,>>252,>>253のようなメモリも開放できない奴もいる
0269デフォルトの名無しさん
2016/02/01(月) 21:42:26.29ID:BsHDgmsO0270デフォルトの名無しさん
2016/02/01(月) 22:07:54.53ID:wHu9vKIt低脳な Java 使いだから Java 厨ってラベル貼られてることに気づくべき
0271デフォルトの名無しさん
2016/02/01(月) 22:57:12.27ID:47CQ9v48ツリー構造で子が親へ参照を持つときに使ったことがあるな
相互参照するけど、親の寿命管理が必要が無いのでshared/weak_ptrが不要なケース
↓こんな感じ
class tree_view
{
tree_view *parent;
vector<unique_ptr<tree_view>> children;
};
0272デフォルトの名無しさん
2016/02/01(月) 23:10:37.79ID:BsHDgmsOdeleteの出番なしか
0273デフォルトの名無しさん
2016/02/01(月) 23:55:10.43ID:CuJD672cだったら模範解答貼ってみせろよクズ
0274デフォルトの名無しさん
2016/02/02(火) 00:06:14.39ID:ygGmQV700275デフォルトの名無しさん
2016/02/02(火) 00:14:57.63ID:oBfAWjKR子を作り管理するのは親ですか?
0276デフォルトの名無しさん
2016/02/02(火) 00:50:11.96ID:AUeQZlYi0277デフォルトの名無しさん
2016/02/02(火) 00:59:22.35ID:AUeQZlYiこう書いとかないと馬鹿には使えないが口癖のボットに絡まれそうだし一応書いとくわ
0278デフォルトの名無しさん
2016/02/02(火) 01:25:45.50ID:x5amnXbsへえJavaにもRAIIの概念なんてあったんだ
Javaな現場になんてもう何年も関わってないんで知らんかったわ
0279デフォルトの名無しさん
2016/02/02(火) 01:37:28.22ID:r5dd6eSW0280デフォルトの名無しさん
2016/02/02(火) 03:58:43.22ID:uTTEQY4N例だろうとポインタ間違えた上に
今時newしてvectorにpush_backしちゃうようなコード書いて
その上逆ギレしちゃう奴は正直ダメだと思う
0281デフォルトの名無しさん
2016/02/02(火) 06:45:21.02ID:5quLb8tihttp://ideone.com/QRZXDk
上の21行目の再解釈キャストで型変換してるところってVCでは意図したとおりに動いたのですが、
これって他の環境でも大丈夫ですか?
0282デフォルトの名無しさん
2016/02/02(火) 07:52:12.29ID:Vw/b/5l0おしえてください。
&a[0]はaの要素の1番目の番地で&aはaの1番目の要素を
指し示すアドレスのアドレスの気がするからです。
0283デフォルトの名無しさん
2016/02/02(火) 07:59:56.34ID:N9T32bdW(ポインタ変数のアドレスならある)
0284デフォルトの名無しさん
2016/02/02(火) 09:42:40.95ID:LvBWX7cXstd::vector<int> v(???);
でメモリの確保に失敗した場合の動作はどうなりますか
0285デフォルトの名無しさん
2016/02/02(火) 11:14:27.48ID:NoB4axe7"自動車"クラスが提供する個々の機能(例えばアクセルやブレーキ)は、
サブクラスが提供(例えばアクセルはエンジンクラスに定義)して、
"自動車"クラスは特に関与しないものとします。
この前提において"自動車"クラスを定義する場合、"自動車"クラスは
サブクラスを継承するかたちで定義したほうが良いでしょうか?
それとも、自動車クラスが個々のサブクラスのインスタンスを保持して
メソッドをラップしたほうが良いでしょうか?
0286デフォルトの名無しさん
2016/02/02(火) 11:22:39.18ID:ygGmQV70継承を確信できるところでのダウンキャストは static_cast の出番。 5.2.9 [expr.static.cast] p2
reinterpret_cast で作った結果に移植性があるのはごく一部だけ。 5.2.10 [expr.reinterpret.cast]
0287デフォルトの名無しさん
2016/02/02(火) 11:22:52.91ID:MIlHcyxr0288デフォルトの名無しさん
2016/02/02(火) 11:23:10.07ID:ygGmQV70いいかげんな教材には a が「配列先頭要素へのポインタである」などと
書いてあるかもしれないが、実際には「配列」であり一部の例外を除いて
「配列先頭要素へのポインタに暗黙変換される」ということになっている。
& 演算子は例外のひとつで、 &a で配列そのものへのポインタが得られる。
4 [conv] p8
0289デフォルトの名無しさん
2016/02/02(火) 11:23:22.64ID:ygGmQV70非標準の動作なので、まずコンパイラのマニュアルを調べる。
書いてなければ、どうせ移植性は期待できないので実験でもいいかもしれない。
0290デフォルトの名無しさん
2016/02/02(火) 11:24:45.55ID:ygGmQV70https://www.google.co.jp/search?q=is-a+has-a
0291デフォルトの名無しさん
2016/02/02(火) 11:30:10.28ID:NTv/QStd当然後者。
現実の関係を模倣するのが普通。
一点、ラップってのをどういう意図で使っているのかが気になる。
個々の部品を組み合わせて、車としての機能を提供すると考えてね。
部品の機能をスルーするだけのラッパーはあまり出ないはず。
0292285
2016/02/02(火) 11:53:42.81ID:NoB4axe7継承と包含の関係を理解してませんでした。
ちなみに”サブクラス”という言葉の使い方も誤解してたみたいです(^^;
>>291
>ラップってのをどういう意図で使っている
部品の機能をスルーするだけのラッパーという意味でした (^^;
その辺も含めてもう少し設計を見直したいと思います。
0293デフォルトの名無しさん
2016/02/02(火) 13:09:09.90ID:ZM61xwKS0294デフォルトの名無しさん
2016/02/02(火) 13:26:24.18ID:7f7wf/mW俺の環境だと、色々省略すれば
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しましょうって話に落ち着くかと。
0295デフォルトの名無しさん
2016/02/02(火) 14:09:39.60ID:oBfAWjKR知らなかった・・・
0296デフォルトの名無しさん
2016/02/02(火) 15:14:11.42ID:Ycdr5jOx0297デフォルトの名無しさん
2016/02/02(火) 15:35:32.57ID:TPiwOAfkなんか気持ち悪いな
0298デフォルトの名無しさん
2016/02/02(火) 15:59:38.85ID:5quLb8ti回答ありがとうございます。
protectedで継承しているのでstatic_castは無効なのです。
これは移植性ないとみるべきなんでしょうか。
強引にCスタイルキャストでごまかすべきか・・・。Orz
0299デフォルトの名無しさん
2016/02/02(火) 17:00:35.47ID:ucpE/ELv細かいことを言うようだけど &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] の値が同じになる理由は、
配列の中身がメモリにどう格納されるか、を図で表すと分かりやすいんだが
俺の表現力では無理なんでどなたか頼む。
0300デフォルトの名無しさん
2016/02/02(火) 17:01:52.82ID:7f7wf/mWcastして欲しくないからprotectedにしてるんじゃないの?
0301デフォルトの名無しさん
2016/02/02(火) 17:23:10.99ID:5quLb8tiいやー、ハンドルみたいな使い方を規定していて、
自分は外部関数で値を変更したいんですけど、ユーザーには触ってほしくない。
という、わがままな欲求です。
そのうちUnified Call Syntaxが入ったら、いろいろやろうと思ってるところです。
0302デフォルトの名無しさん
2016/02/02(火) 17:25:43.26ID:MIlHcyxrコレ昔VC6でやったら結果が違った
BCC5だとすべて同じ値なのに
0303デフォルトの名無しさん
2016/02/02(火) 17:29:56.27ID:MIlHcyxr0304299
2016/02/02(火) 17:53:41.97ID:ucpE/ELva[] において &a が配列全体のアドレスを表すってのは
ANSI C で統一された挙動だったね。調べ直しちゃったよ。
C++ でも成立するよな。自信が揺らいできた。
0305デフォルトの名無しさん
2016/02/02(火) 17:55:25.15ID:C4M/U0awしかたないね
0306デフォルトの名無しさん
2016/02/02(火) 18:30:04.71ID:1NZHqYvtたまたまお前の処理系がバイト単位でリニアアドレッシングしてるから。
int a[3]; について
&a[0] は先頭要素のアドレス
&a は「a[0] a[1] a[2]」という配列全体のアドレス
だから一致する
0307デフォルトの名無しさん
2016/02/02(火) 18:31:29.65ID:QW7JMPO0https://ideone.com/woT6Lc
&a[0]は要素へのポインタ(一個目の要素へのポインタ)
&aは配列へのポインタ(一個目の配列へのポインタ)だよ
>>231
:(~):
:(i:i:i:i:i):
:(i:i:i:i:i:i:i:):
:( ゙´ω`゙): …
:(:::::::::ソ:::っ:
:し─J ┃:
0308デフォルトの名無しさん
2016/02/02(火) 18:35:17.86ID:KYl+p0oO0309デフォルトの名無しさん
2016/02/02(火) 19:17:24.83ID:WSo7+ODL0310デフォルトの名無しさん
2016/02/02(火) 20:12:44.79ID:po3vtalAなんでsizeof(array)で正しくサイズが出てくるのか分からん
0311デフォルトの名無しさん
2016/02/02(火) 20:35:13.03ID:WkrnCzmR> arrayと&array[0]が同じなら
ポインタに変換したら一緒になると言うだけ
> なんでsizeof(array)で正しくサイズが出てくるのか分からん
array 自体のサイズをコンパイラは知ってるから
0312デフォルトの名無しさん
2016/02/02(火) 20:54:40.03ID:MIlHcyxr&と&&は別物だよ
ちなみに&&は定数も代入できる
0313デフォルトの名無しさん
2016/02/02(火) 20:56:18.82ID:RveVHAYz馬鹿は去れ
0314デフォルトの名無しさん
2016/02/02(火) 21:28:49.56ID:5quLb8tiarray[0] ->配列の要素の型
sizeof(array)はdecltype(array)の暗黙に持ってる長さ情報にアクセスしている?
array == &array[0] はアドレス値は同じだが、型自体は違うので持ってる情報は違うもの。前者はT[]。後者は(&T)
暗黙の型変換でぐちゃぐちゃになってるのはお前の頭だ!
であってる?
0315デフォルトの名無しさん
2016/02/02(火) 21:29:30.66ID:5quLb8ti0316デフォルトの名無しさん
2016/02/02(火) 21:30:29.16ID:MIlHcyxr0317デフォルトの名無しさん
2016/02/02(火) 21:33:13.54ID:5quLb8tiint&& a=int(5);と等価だっけ?
0318デフォルトの名無しさん
2016/02/02(火) 21:34:17.88ID:MIlHcyxrT&&a=n ; でnの参照になったりする。自動で。
0319デフォルトの名無しさん
2016/02/02(火) 21:34:40.95ID:06fZR6NSh.~hoge();
デストラクタはconstついてないのに呼べるのは何故ですか
0320デフォルトの名無しさん
2016/02/02(火) 21:53:06.16ID:RveVHAYz今確認したが同じアドレスになった
どうしてそう息を吸って吐くように嘘をつくのか
ちなみに&aがどこを指しているかわからないのは
Visual C++ 6.0じゃなくてお前のオツムが原因
0321デフォルトの名無しさん
2016/02/02(火) 22:09:17.83ID:MIlHcyxrHotfixいれまくったりすると環境変わるからね
昔のことだからよく覚えてないけど
0322デフォルトの名無しさん
2016/02/02(火) 22:20:22.89ID:RveVHAYzint *p = &a;
error C2440: 'initializing' : 'int (*)[4]' から 'int *' に変換することはできません。(新しい動作 ; ヘルプを参照)
0323デフォルトの名無しさん
2016/02/02(火) 22:51:04.27ID:MIlHcyxrバカでもわかる型の違いですけど
なんでキャストしないのですか?
0324デフォルトの名無しさん
2016/02/02(火) 23:11:50.94ID:x5amnXbsなんで&a[0]にしないのですか?
0325デフォルトの名無しさん
2016/02/02(火) 23:20:08.01ID:RveVHAYzだが>>323の様にどこを指しているかわからないと言ってるのにキャストするのはヤバい
>>318とかはよ病院に行くレベル
0326デフォルトの名無しさん
2016/02/02(火) 23:20:42.79ID:x5amnXbs&a[0]:5文字
0327デフォルトの名無しさん
2016/02/02(火) 23:27:30.24ID:MIlHcyxr病院逝くのは貴様の方だろ
0328デフォルトの名無しさん
2016/02/02(火) 23:31:01.70ID:7f7wf/mW0329デフォルトの名無しさん
2016/02/02(火) 23:40:56.45ID:x5amnXbs0330デフォルトの名無しさん
2016/02/03(水) 00:24:20.72ID:5VKefHqD0331デフォルトの名無しさん
2016/02/03(水) 07:32:59.13ID:Gb259GwX(int*)aって書ける時点でaは配列かポインタだろ
なんでvectorクラスを仮定してんだよ
0332デフォルトの名無しさん
2016/02/03(水) 12:46:03.59ID:6CbCMv4YJavaとは違いC++は基底クラスのインスタンスを派生クラスにダウンキャスト出来てしまうのですが、
これは正しい挙動なのでしょうか。
またオーバーライドした関数が呼べるのは理解できるのですが、
派生クラス独自の関数も呼べてしまうのは腑に落ちません。
0333デフォルトの名無しさん
2016/02/03(水) 12:54:30.47ID:AVVts3m8もしそうせざるを得ない場合は、設計が間違ってると思うべき
0334デフォルトの名無しさん
2016/02/03(水) 12:59:18.19ID:AVVts3m8どうしても使わざるを得ない場合はdynamic_castを使うべき
0335デフォルトの名無しさん
2016/02/03(水) 13:02:03.09ID:EbXG9hpy実行時のチェックなしでできてしまうって意味だよね?
プログラマが手動でメモリを割り付けてたりする場合もあるから、下手にチェックされても困るケースがある。
チェックしてほしければvirtual関数持たせた上でdynamic_castしろ。
あと、gが呼べるのは暗黙の引数であるthisに触ってないから、thisがなんであっても問題が表出しないだけ。
0336デフォルトの名無しさん
2016/02/03(水) 13:59:40.04ID:XI3wSbIfC++言語の仕様上behavior is undefinedなので
どのような結果になっても正しいからな
コンパイラーの出力するコードの都合でたまたまエラー無くspecialが呼び出せてもおかしくはない
0337デフォルトの名無しさん
2016/02/03(水) 19:09:23.55ID:V5mcV8ll0338デフォルトの名無しさん
2016/02/03(水) 19:56:03.11ID:5VKefHqDえっ?!
0339デフォルトの名無しさん
2016/02/03(水) 23:17:57.39ID:XI3wSbIfそうなんです
プログラマーは全知全能でミスをしたら自己責任という思想の言語なので
都合の悪いことはundefined behaviorの扱いにするのがC/C++のお家芸
0340デフォルトの名無しさん
2016/02/04(木) 22:34:42.23ID:vx+zStXcxがbool型変数だとして、下記は常に成立する?
((x && (int)x == 1) || (!x && (int)x == 0)
0341340
2016/02/04(木) 22:39:53.98ID:vx+zStXc>>340の質問意図は、(int)xでtrue/falseを1/0に変換することが規格で正当化されるか否か確認したいということです。
実はxに格納されたtrue/falseを1/0に変換するには、!!xとでもすべき?
0342デフォルトの名無しさん
2016/02/04(木) 22:49:25.93ID:+7Di5n3C0343デフォルトの名無しさん
2016/02/04(木) 22:52:25.87ID:DD/iUN5m!
0344デフォルトの名無しさん
2016/02/04(木) 23:50:20.63ID:cr9CcGXP今からwww.open-std.orgでN4567をダウンロードして4.7節の第四段落を読むんだ!
0345デフォルトの名無しさん
2016/02/05(金) 14:01:35.52ID:HgDpm1WA0346デフォルトの名無しさん
2016/02/05(金) 15:27:33.07ID:BBqIJr5G0347片山博文MZ ◆T6xkBnTXz7B0
2016/02/05(金) 16:01:17.74ID:+wdY+cb50348デフォルトの名無しさん
2016/02/05(金) 16:07:19.66ID:JYiBRtGE0349デフォルトの名無しさん
2016/02/05(金) 18:54:43.78ID:HgDpm1WAGCCオワコンとか豪語してたのはなんだったんだ
0350デフォルトの名無しさん
2016/02/05(金) 19:30:15.73ID:VxMqMA9Y0351デフォルトの名無しさん
2016/02/05(金) 20:08:04.06ID:JYiBRtGE0352デフォルトの名無しさん
2016/02/05(金) 20:16:50.99ID:HgDpm1WA>>350
昔はアカデミック目的ならタダだったらしいね
0353デフォルトの名無しさん
2016/02/05(金) 20:39:31.37ID:j4SE5TPh0354デフォルトの名無しさん
2016/02/05(金) 20:42:32.39ID:x6bpCF930355デフォルトの名無しさん
2016/02/05(金) 20:47:18.11ID:8VG1Xbz/0356デフォルトの名無しさん
2016/02/05(金) 20:54:16.61ID:0mavO284STLにはarrayなんてありません
0357デフォルトの名無しさん
2016/02/05(金) 20:55:35.17ID:Da4oU4sD0358デフォルトの名無しさん
2016/02/05(金) 23:59:20.96ID:h93Uutag0359デフォルトの名無しさん
2016/02/06(土) 00:13:51.81ID:UqtC6Emj0360デフォルトの名無しさん
2016/02/06(土) 00:15:16.29ID:cWTD7JVSあくまで実装例って位置付けで
0361デフォルトの名無しさん
2016/02/06(土) 00:23:29.24ID:EywJMRGG0362デフォルトの名無しさん
2016/02/06(土) 11:43:48.82ID:M1Vkc4iOお前まだconstexpr対応してないの?
はよ専用ブラウザ入れろ
0363デフォルトの名無しさん
2016/02/06(土) 17:55:48.52ID:DtUiRvEm0364デフォルトの名無しさん
2016/02/06(土) 18:07:24.47ID:gyUZgEHUさようなら、楽園の住人
0365デフォルトの名無しさん
2016/02/06(土) 18:31:40.60ID:OQzrG2kmC++の存在意義ってなくなるよな。
ここ数年のCはC++の成果を貪欲に取り入れる傾向もあるし、
そのうちC++からCへの回帰が始まるんじゃないかって気がしてる。
0366デフォルトの名無しさん
2016/02/06(土) 18:36:09.47ID:DtUiRvEm0367デフォルトの名無しさん
2016/02/06(土) 18:47:01.63ID:s3egBiWX0368デフォルトの名無しさん
2016/02/06(土) 18:52:28.27ID:ewLa/pEP爺にはよくあることだから悲観しなくていい
楽園で楽しんでくれ
0369デフォルトの名無しさん
2016/02/06(土) 19:01:46.31ID:0Vjd8v8v> 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。
それ継承の仕組みだし
> 構造体の中に構造体を持たせてユニオンすれば継承だしな。
意味不明だし
まあCの楽園で成仏しとけ
0370デフォルトの名無しさん
2016/02/06(土) 19:06:52.10ID:1ZsFckKc0371デフォルトの名無しさん
2016/02/06(土) 19:09:17.71ID:/1/YZwYlありがとう
vector先輩についていくわ
0372デフォルトの名無しさん
2016/02/06(土) 19:23:16.72ID:lxi6Zpfn0373デフォルトの名無しさん
2016/02/06(土) 20:05:33.75ID:ijtrMwoE>> 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。
>それ継承の仕組みだし
仮想関数の素朴な実装だろ;
(正しくはvtblを作るべきだが、
>> 構造体の中に構造体を持たせてユニオンすれば継承だしな。
>意味不明だし
「ユニオン」の誤用があるようだが
入れ子の構造体は継承の素朴な実装に他ならないだろ;
0374デフォルトの名無しさん
2016/02/06(土) 20:10:44.00ID:ijtrMwoEstruct 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でない)継承の真実の姿、
0375デフォルトの名無しさん
2016/02/06(土) 20:12:28.12ID:bscwrwNUまずはスレ違いだってことを認識できるまでには成長することだな
0376デフォルトの名無しさん
2016/02/06(土) 20:16:37.46ID:zK6xYjd8あまり意味があるとは思えない
0377デフォルトの名無しさん
2016/02/06(土) 20:22:56.44ID:kD783RuOXVIewのAPIって知っている?
0378デフォルトの名無しさん
2016/02/06(土) 20:32:27.60ID:K1T12T5X0379デフォルトの名無しさん
2016/02/06(土) 20:36:18.00ID:DtUiRvEmstructをm$独自の拡張を使っていることはいいとして基底クラスの中身をユニオンしておくんだよ。そうすると.で中身をとりだせるようになる。
{}で0になることもしらないのか?
0380デフォルトの名無しさん
2016/02/06(土) 20:49:45.09ID:ijtrMwoE>>374のstructのどこにMS拡張が…?
>>379
>>{}で0になることもしらないのか?
C言語でおk
0381デフォルトの名無しさん
2016/02/06(土) 20:57:45.31ID:ijtrMwoEあらかじめ逝っておくが、>>374は無名構造体メンバなど使っていないCのソースコードのつもりであって、
メンバアクセス表記を厳密にC++と一致させることを目的にはしていない
(struct BarのベースクラスFooのメンバへのアクセスをstruct Barのインスタンスからやる場合はb.m_a、ではなくてb.m_base.m_aと書かねばならない
メンバの初期化も主たる論点ではないから配慮していない(追加コードでどうとでもできるので
>>379のユニオンの使い方はおそらくメンバアクセス表記をC++と一致させることを意図しているのだろうが
unionでは多分意図通りの継承動作にならない希ガス
想像が付かなさ過ぎるからコードを示してホスイ、
0382デフォルトの名無しさん
2016/02/06(土) 21:13:08.69ID:OQzrG2km「3 == 3」になるっていう話をしているんじゃないのか?
0383デフォルトの名無しさん
2016/02/06(土) 21:27:52.21ID:ewLa/pEPって思う
0384デフォルトの名無しさん
2016/02/06(土) 21:29:53.37ID:DtUiRvEmstruct Foo {
int m_a, m_b;
};
struct Bar {
union{
struct Foo;
Foo m_base;
}
int m_x, m_y;
};
0385デフォルトの名無しさん
2016/02/06(土) 21:31:27.25ID:K1T12T5X0386デフォルトの名無しさん
2016/02/06(土) 21:56:39.15ID:kD783RuO0387デフォルトの名無しさん
2016/02/06(土) 21:56:59.40ID:64Pydz+a楽園の住人にはカプセル化という発想はないのか
0388デフォルトの名無しさん
2016/02/06(土) 22:36:08.60ID:ijtrMwoEいちおう継承動作はするが、unionでなんも解決しとらん…
(>>381の「b.m_base.m_aと書かねばならない 」問題が変わらずそのまんま
struct Barがunion Barなら「b.m_base.m_aと書かねばならない 」方は解決し得るが
それではBarによるFooの継承にならぬ(∵Barの基底クラスFooと、Bar固有のメンバが同じ領域を共有する
0389デフォルトの名無しさん
2016/02/06(土) 23:05:23.36ID:sv0+Wms00390デフォルトの名無しさん
2016/02/06(土) 23:23:57.22ID:zK6xYjd80391デフォルトの名無しさん
2016/02/06(土) 23:39:17.52ID:K1T12T5Xこの時点でC++
Cオワタw
0392デフォルトの名無しさん
2016/02/06(土) 23:43:08.90ID:K1T12T5XForward でしょコレ?
なにもunionしていない件w
0393デフォルトの名無しさん
2016/02/06(土) 23:43:47.41ID:g5TnjOqxstruct Bar {
union{
struct Foo;
Foo m_base;
}
int m_x, m_y;
};
謎の構造体。M$拡張が謎過ぎる。
intをconstみたいなtype qualifierとして使う拡張なんだろうか?
struct Foo;と前方参照っぽい宣言が共用体の宣言中に出てくるのも謎。
しかもすぐ前で完全な宣言があるのに不完全な宣言してどういう意味があるんだろう。
謎過ぎる。M$の謎と命名しておこう。
0394デフォルトの名無しさん
2016/02/06(土) 23:48:37.39ID:zK6xYjd8今回だけは特別に教えることにするよ。
今回だけは特別に教えることにするよ。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0395デフォルトの名無しさん
2016/02/07(日) 00:03:47.31ID:itHaFKCT0396デフォルトの名無しさん
2016/02/07(日) 00:18:09.92ID:2T9Cjz04type qualifierとは何なのか
0397デフォルトの名無しさん
2016/02/07(日) 00:20:08.19ID:itHaFKCT0398デフォルトの名無しさん
2016/02/07(日) 00:36:30.49ID:umEWBWiFhttps://en.wikipedia.org/wiki/Type_qualifier
謎のM$拡張だろ。union {} の後に直接intが続いてる。
予約語なので変数名ではあり得ない(intの後にカンマもないし)から、intをtype qualifierとして拡張しているに違いない。
0399デフォルトの名無しさん
2016/02/07(日) 00:50:27.56ID:2T9Cjz04勉強になった
0400デフォルトの名無しさん
2016/02/07(日) 00:50:42.57ID:O4F8gqhmわかったらさっさと帰れ
0401デフォルトの名無しさん
2016/02/07(日) 00:52:59.97ID:umEWBWiF0402デフォルトの名無しさん
2016/02/07(日) 01:24:34.33ID:itHaFKCT0403デフォルトの名無しさん
2016/02/07(日) 07:42:43.72ID:ywTW8z180404デフォルトの名無しさん
2016/02/07(日) 08:19:23.63ID:H1plH6un普通にできるのだが。 M$の拡張のスイッチはいってなくてちょっと変だが。
0405デフォルトの名無しさん
2016/02/07(日) 08:30:57.45ID:2T9Cjz040406デフォルトの名無しさん
2016/02/07(日) 08:58:16.66ID:2T9Cjz04struct base {int x,y; };
struct derived {int x,y; int a,b;};
この方が良くないか?
まあセミコロンが抜けたのを揚げ足とってtype qualifierがどうとか意味不明なことを連呼する低能といい勝負だな
0407デフォルトの名無しさん
2016/02/07(日) 09:20:54.21ID:ihWrHU4lJavaとc言語 勉強してますが c++は
かなり違いますか??
0408デフォルトの名無しさん
2016/02/07(日) 09:24:14.26ID:H1plH6un0409デフォルトの名無しさん
2016/02/07(日) 09:48:45.37ID:YehISXuU何をしたいコードなのかさっぱり理解できないのは俺だけか…
0410デフォルトの名無しさん
2016/02/07(日) 09:57:59.57ID:HPtrUBPyFoo foo = {.m_a=1, .m_b=2};
Bar bar = {.m_base = foo, .m_x=3, .m_y=4};
0411デフォルトの名無しさん
2016/02/07(日) 10:11:54.69ID:2T9Cjz04話の発端を辿れば>>366,379にはすぐたどり着くだろう
この2つのレスを読んだ上でわからないなら病院に行くというのも良いだろう
0412デフォルトの名無しさん
2016/02/07(日) 10:44:18.18ID:umEWBWiF>今回だけは特別に教えることにするよ。 あとはもう何も教えない。
見苦しいぞ、チンカス
前言ひるがえして教えるなら、intの前にセミコロン不要なM$拡張とやらを解説しろよ。
0413デフォルトの名無しさん
2016/02/07(日) 11:17:57.53ID:YehISXuUそれならまだ理解できるんだが
>>404 は全く意味不明 w
0414デフォルトの名無しさん
2016/02/07(日) 11:21:51.54ID:wnPOo6ul良かったなお前、なんかもう少しで新しい伝説になれそうだよ(´・ω・`)
0415デフォルトの名無しさん
2016/02/07(日) 12:41:33.79ID:jZhj8x29さもないと
他人様が書いた多重継承を使ったコードに遭遇して死ぬか、
多重継承の危険性を認識できないまま使って死か、
しかし抽象クラスの多重継承は安全で便利なんだ、ということを知らないまま死ぬ
とかいろいろ…
0416デフォルトの名無しさん
2016/02/07(日) 12:48:25.44ID:ywTW8z18平気で表に出せるその神経はすごいと思う
0417デフォルトの名無しさん
2016/02/07(日) 12:51:22.52ID:ywTW8z18ヒエッ…
0418デフォルトの名無しさん
2016/02/07(日) 13:01:53.78ID:lDWgMel+凄いというより、俺はもっと率直に怖いわw
こいつに関わったら糞まみれになる!っていう危険を感じるわ
0419デフォルトの名無しさん
2016/02/07(日) 13:11:08.84ID:ywTW8z18てっきり顔真っ赤にして書いたのかと思って油断してたんだ
こりゃー本物ですわ…
0420デフォルトの名無しさん
2016/02/07(日) 14:58:13.14ID:GW5WZ8T20421デフォルトの名無しさん
2016/02/07(日) 15:21:06.58ID:ywTW8z180422デフォルトの名無しさん
2016/02/07(日) 15:36:34.21ID:K4RZyWmMC++を進化させたのがJavaだよ
基本的な考えはいっしょ
0423デフォルトの名無しさん
2016/02/07(日) 15:44:07.75ID:ywTW8z18仕組みも定石も書き方もかなり違うっしょ
駄目だよ嘘教えちゃ…
0424デフォルトの名無しさん
2016/02/07(日) 15:46:01.35ID:K4RZyWmMクラスローダとか枝葉だし
テンプレートはJavaも取り入れてるし
メモリ管理はそれこそ正統進化でしょ
0425デフォルトの名無しさん
2016/02/07(日) 16:03:53.98ID:ywTW8z18本気で言うてんの?
クラスローダはリフレクションの動作の要
ジェネリクスとテンプレートは別物だし
C++のメモリ管理なんて根本的な考え方が違う
0426デフォルトの名無しさん
2016/02/07(日) 16:13:48.60ID:K4RZyWmM進化すれば一緒にはならないのは当然
0427デフォルトの名無しさん
2016/02/07(日) 16:15:31.53ID:YehISXuU必須の要件でないなら C++ か C# 辺りを使う
0428デフォルトの名無しさん
2016/02/07(日) 16:18:49.64ID:ywTW8z18あんさん「基本的な考えはいっしょ」って思いっきり言うとりますがな…
0429デフォルトの名無しさん
2016/02/07(日) 16:20:12.15ID:1Xy48Qqnテンプレートでジェネリクスの機能を実現できるとは言えるけど、全くもって同じではない
0430デフォルトの名無しさん
2016/02/07(日) 16:20:56.37ID:TXHOUVTAC++のインタプリタ作ろうとして出来損ないになったのがJavaだろ
0431デフォルトの名無しさん
2016/02/07(日) 16:21:03.56ID:9JmoCpHp>>424はJavaもC++も両方ニワカなんだなってわかる
0432デフォルトの名無しさん
2016/02/07(日) 16:31:34.60ID:CZPnBtq10433デフォルトの名無しさん
2016/02/07(日) 17:35:59.24ID:2T9Cjz04目的と手段が入れ替わっているのではないかと危惧してしまう
0434デフォルトの名無しさん
2016/02/07(日) 17:41:03.74ID:vcfxOeKG0435デフォルトの名無しさん
2016/02/07(日) 17:44:02.11ID:H1plH6un0436デフォルトの名無しさん
2016/02/07(日) 17:49:08.88ID:fu54F6yL0437デフォルトの名無しさん
2016/02/07(日) 17:51:01.99ID:jvYVRZ1r0438デフォルトの名無しさん
2016/02/07(日) 17:53:35.11ID:1Xy48Qqn型安全という言葉くらい勉強してくれ
0439デフォルトの名無しさん
2016/02/07(日) 17:58:01.45ID:itHaFKCTおいやめろ、newしたままホウチミンが沸くだろ
0440デフォルトの名無しさん
2016/02/07(日) 20:33:27.60ID:ywTW8z18型消去しまくりで、ユルユルのジェネリクスと
インスタンス化しまくりで、カチカチのテンプレートが同じだと思ってるのは
C++をまともに使ったことが無いのにイメージで語る人間ぐらいだろ
0441デフォルトの名無しさん
2016/02/07(日) 20:38:31.87ID:oOsMibJK0442デフォルトの名無しさん
2016/02/07(日) 20:40:02.81ID:DCLFR8bK実際こんな意識のやつしかいない
0443デフォルトの名無しさん
2016/02/07(日) 20:40:32.15ID:ywTW8z18よく読んだらダークサイドに落ちるテンプレート使いを憂う紳士だったか…
すまない早とちりだった
0444デフォルトの名無しさん
2016/02/07(日) 20:42:36.82ID:9JmoCpHp当時は何言ってんだこのオッサンと思ってたが
今となってはC++の本質はむしろテンプレートにこそあるとすら思うわ
0445デフォルトの名無しさん
2016/02/07(日) 20:46:00.38ID:jZhj8x290446デフォルトの名無しさん
2016/02/07(日) 22:16:11.87ID:2T9Cjz04そこはかとなく昭和臭の漂う言語センスだな
0447デフォルトの名無しさん
2016/02/07(日) 23:45:46.38ID:BRQ6zdFU「昭和的センスの光る秀逸な言語センス」と書き込むのが優秀な工作員。
0448デフォルトの名無しさん
2016/02/08(月) 08:10:58.75ID:FLpG0nufってModern C++ Designでも使われてるな。4.5章。
アレクサンドレスクさん大丈夫か?
0449デフォルトの名無しさん
2016/02/08(月) 08:26:46.05ID:1arqmFZSpush_backの前にその都度やってはいけない
std::vectorの実装によっては見過ごせない速度低下を招くおそれがある
0450デフォルトの名無しさん
2016/02/08(月) 08:57:30.60ID:M0j0fnEJこの人のことかい?
https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu
0451デフォルトの名無しさん
2016/02/08(月) 14:33:59.40ID:sy4WOp1q0452デフォルトの名無しさん
2016/02/08(月) 18:36:26.79ID:hQVN/n6H実装によっちゃ遅いから一律ダメなんて馬鹿げてる。
問題は例外安全の保証が無いのに使っちゃうようなコード。
0453デフォルトの名無しさん
2016/02/08(月) 20:59:27.12ID:91HGMZTwそうは言っても1億件のデータにリニアサーチとかするのはバカって言われてもしょうがない
0454デフォルトの名無しさん
2016/02/08(月) 21:07:15.68ID:0e7wp70j細かい性能の差は実装依存が当然だが
線形時間か対数時間かぐらいは仕様にしてくれないと困るべ。
0455デフォルトの名無しさん
2016/02/08(月) 21:13:26.69ID:e87P5enc処理に何秒かかろうと関係ない実装を思いついた・・・・・・
0456デフォルトの名無しさん
2016/02/08(月) 21:17:06.11ID:1arqmFZSv.push_backの前にその都度v.reserve(v.size()+1)するのは完全に馬鹿げてると思うが?
0457デフォルトの名無しさん
2016/02/08(月) 21:31:38.79ID:jK3N5mCN0458デフォルトの名無しさん
2016/02/08(月) 21:43:10.93ID:0e7wp70j野郎
・
なんてことを思いつくんだ・・・
こいつは・・・・・やばい・・・・・ぜ
0459デフォルトの名無しさん
2016/02/08(月) 21:45:29.03ID:UKgal17Zそれサーチについて言うならデータ例外でない例外だろ
つまりサーチ自体のアフォバグがない保証で
それを保証できないコードを出荷する作者の神経そのものの問題は
もはやコードだのアルゴリズムだのの品質とは無関係
0460デフォルトの名無しさん
2016/02/08(月) 21:57:50.30ID:tAHem2TH(規格で保証されていなくても)例外安全対策なんてクソ食らえだぜ」
ということですねふむふむ
0461デフォルトの名無しさん
2016/02/08(月) 22:06:08.66ID:LnO11qfOご丁寧にエラーを出したところでメモリ増やすかメッシュ数減らすと言うのは変わらんわけで。
0462デフォルトの名無しさん
2016/02/08(月) 22:18:48.62ID:91HGMZTw状況次第じゃね?
0463デフォルトの名無しさん
2016/02/08(月) 22:29:44.19ID:ccWKvjolそういうソフトが蔓延ると原因把握するの面倒だからちゃんとバグ報告して欲しい。
0464デフォルトの名無しさん
2016/02/08(月) 23:50:58.34ID:mRHfF9cRc言語
c++
java
などなどそれぞれ主にどんな分野で使われていますか?
プログラム言語がありすぎてワケわかりません
0465デフォルトの名無しさん
2016/02/09(火) 04:06:59.53ID:JiEqdJhYC:OSの中核、組み込み
C++:OSガワ、ミドルウェア、ブラウザ、マルチメディア、言語処理系(Java含む)など
Java:一般・業務・Webアプリケーション(大規模含む)
シェアはJava > C ≒ C++
C/C++合わせてJavaと同程度
0466デフォルトの名無しさん
2016/02/09(火) 04:09:07.38ID:JiEqdJhYこれのC++に書いた分野はCも使われる事が多いが、
主分野と言われたので省いた
0467デフォルトの名無しさん
2016/02/09(火) 04:30:48.06ID:1CYnHFpe世の中にある商用のシミュレーションソフトとやらのほとんどは
おまいらが見たら噴飯物かあるいは卒倒するレベルのコードだと思う
とくに国産ソフトは
0468デフォルトの名無しさん
2016/02/09(火) 06:31:50.30ID:7j9PU2Vm↑は谷岡のノリで言った冗談だろ
0469デフォルトの名無しさん
2016/02/09(火) 07:10:33.24ID:jOU/WMb90470デフォルトの名無しさん
2016/02/09(火) 07:58:11.21ID:sh9Vl//D設定ミスでフォルトするのはどうかと思うが、メモリ一不足の対応は難しいな
0471デフォルトの名無しさん
2016/02/09(火) 08:07:47.87ID:GGDlYrLiいけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0472デフォルトの名無しさん
2016/02/09(火) 08:27:57.61ID:6SIhh/2K0473デフォルトの名無しさん
2016/02/09(火) 08:38:04.20ID:CN4QadC3相当な時間をかけた挙句に「メモリが不足しています」はいかんよ。
0474デフォルトの名無しさん
2016/02/09(火) 11:48:56.15ID:RvW28ssM0475デフォルトの名無しさん
2016/02/09(火) 12:52:53.74ID:sh9Vl//D> システム監視ソフト
そう言う奴は起動してしまえば新規にメモリー確保したりしないから API 回りとかに気を配ればいい
普通のアプリケーンョンと同列に語っちゃダメだろ
0476デフォルトの名無しさん
2016/02/09(火) 17:42:12.67ID:GGDlYrLiシステム監視ソフトだからといってメモリ確保しなくていいわけじゃないです
そのソフトはどのプロセスがいつ起動してどれだけのメモリを使用していつ終了したかを
ログするものでしたがその過程で新たなメモリ確保はどうしても発生します
0477デフォルトの名無しさん
2016/02/09(火) 18:11:10.64ID:sh9Vl//Dで、確保できなかったらどうするんだ?
ログは取れなくても生きてるだけでいいんかよ w
0478デフォルトの名無しさん
2016/02/09(火) 18:19:20.93ID:GGDlYrLiそう。メモリ確保できない間はどうしようもないので黙っている
システムのメモリ状況が改善したら再びログを出力し始める
最後の最後まで生きていることが最重要なソフト
0479デフォルトの名無しさん
2016/02/09(火) 18:32:24.31ID:GGDlYrLiるらしいという状況があって
俺が作った監視ソフトはどのプログラムが犯人なのかを突き止めるのが主目的だった
穀潰し犯人のプログラムは俺の監視プログラムより先に死んで、メモリが解放されるから
それで俺の監視プログラムの目的は達成されるというわけ
0480デフォルトの名無しさん
2016/02/09(火) 18:36:22.68ID:GGDlYrLi☓ システムクラッシュにるらしいという状況があって
◯ システムクラッシュに至るらしいという状況があって
0481デフォルトの名無しさん
2016/02/09(火) 18:58:03.49ID:sh9Vl//D最も知りたい時の状況を採れないとかアホすぎだろ
0482デフォルトの名無しさん
2016/02/09(火) 20:29:21.19ID:GGDlYrLiいざとなったときの余分なメモリ確保は行っていたんだが?
アロケーションが出来なかった場合はそれを解放して自分が動けるようにする
そういう考慮をしてもダメなケースっていうのはあるんだよ
お前ごときにアホ呼ばわりされる筋合いは微塵もないからもう黙ってれ
0483デフォルトの名無しさん
2016/02/09(火) 21:20:35.31ID:XI8hNy2k> アロケーションが出来なかった場合はそれを解放して自分が動けるようにする
だからアロケーションするなって言ってるのにバカなのか?
0484デフォルトの名無しさん
2016/02/09(火) 21:27:20.83ID:IR1D3KHqOSのAPIが内部でメモリ確保してみたいなのならそのAPIがメモリ不足でエラーを返す事はあるだろうけど、その場合c++の例外安全とは関係ないような。
わざわざ自前でthrowしていない限り
0485デフォルトの名無しさん
2016/02/09(火) 21:29:13.32ID:DH+vdKhf> アロケーションが出来なかった場合はそれを解放して自分が動けるようにする
↑と
あらかじめ確保しておいたメモリ内でやりくりするとのと
どちらがスマートかと
0486デフォルトの名無しさん
2016/02/09(火) 21:31:23.88ID:lnigE11cしょっちゅう「メモリ不足です」と嘘つくのは
何なんだぜ
0487デフォルトの名無しさん
2016/02/09(火) 21:34:37.23ID:F3FfwO0D間違いをするだけなのです
0488デフォルトの名無しさん
2016/02/09(火) 21:45:17.76ID:7NZqnMQp(万人に説明できないあるいは説明するのがめんどくさいエラーが発生しました。
ですがその原因が何であるか、例えばメモリ不足であるかどうかは当該ユーザーの
人生には何の関係もありません。そこで、ユーザーの時間を無駄にしないために
適度にもっともらしく、また検証不能であることを十分に示唆するエラーメッセージとして、
われわれが長い経験に基づき選択したのがこの)メモリ不足です
0489デフォルトの名無しさん
2016/02/09(火) 22:41:53.82ID:jOU/WMb9ユーザーエクスペリエンス的に如何なものか
0490デフォルトの名無しさん
2016/02/09(火) 22:47:41.92ID:IR1D3KHqこれは洒落みたいなもので、言うならばイースターエッグの一形態
0491デフォルトの名無しさん
2016/02/09(火) 22:59:31.66ID:efe/Md+W何が言いたいかって言うとエラーの内容は誤魔化さずに詳細までちゃんと書け。
0492デフォルトの名無しさん
2016/02/09(火) 23:41:41.32ID:6SIhh/2K0493デフォルトの名無しさん
2016/02/09(火) 23:55:10.79ID:GGDlYrLiプロセス数の最大値があらかじめ分からないからこういう苦肉の策を取ったんだが
お前もういいよ
>>492
もちろんfreeやdeleteじゃなくOSに確実に返される方法を取ったよボケ
0494デフォルトの名無しさん
2016/02/10(水) 00:51:06.86ID:xIPHXOxSシェルスクリプトみたいに関数内に気軽に関数を定義して使いたいんですが
こういうときはラムダ式を使えばいいんでしょうか?
ラムダ式って主にソート用関数みたいに数行で終わる簡易な用途で使われる
って聞いたんですが、別に普通の関数と同じ感覚で使っても問題ありませんか?
0495デフォルトの名無しさん
2016/02/10(水) 00:56:41.25ID:rEABlirv0496デフォルトの名無しさん
2016/02/10(水) 00:56:53.90ID:73PfeV18コピペするとき依存性を無視してやりやすいからな。
自分の場合な。
auto F =[](){};
って感じだ。
0497デフォルトの名無しさん
2016/02/10(水) 01:11:43.56ID:xIPHXOxSラムダ式なんて言葉を聞くと仰々しく思ってしまいますが
普通に便利に使ってしまって問題ないんですね
0498デフォルトの名無しさん
2016/02/10(水) 02:12:23.35ID:WclI5GwY絶対落ちちゃいけない監視ソフト作った奴が最大値を知らないって?
白々しいな
0499デフォルトの名無しさん
2016/02/10(水) 02:46:18.58ID:WclI5GwY何あたかも作ったかのように語るのかねこいつは
システム自体にプロセス最大数がある事すらも知らなそうだし
0500デフォルトの名無しさん
2016/02/10(水) 03:19:40.03ID:cNfi8Aotずいぶん詳しいようだから聞くけど、プロセス数の最大値をどうやって取得するんだよ
まあそんな問題ですら無いんだけどね
メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから
お前に「こいつ」呼ばわりされても片腹痛いわ
0501デフォルトの名無しさん
2016/02/10(水) 08:59:08.05ID:WclI5GwY最大数がメモリとスタックから決まる事すら気づかん時点で終わっとるわな
>メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから
メモリなど無関係にAPIが動かなければ監視できないわな
正常時まで監視してればいいならログ取るだけでいいからメモリいらんわな
頭が悪いなんてもんじゃないなお前
0502デフォルトの名無しさん
2016/02/10(水) 13:20:19.27ID:OnEbfKeK> プロセス数の最大値があらかじめ分からないからこういう苦肉の策を取ったんだが
Linux なら /proc/sys/kernel/threads-max を見ればいい
Windows は明示的な上限はないけど、8GB メモリーで 7,000個弱
実機で確認すればすぐわかる
そもそも >>476 ではプロセス上限なんて話はしてないから、普通に動いてるプロセス数の倍ぐらいでいいと思う
> もちろんfreeやdeleteじゃなくOSに確実に返される方法を取ったよボケ
具体的にどうやったか書いてみな
>>500
> メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから
どの API がコケるんだ?
プリミティブな API で内部でメモリー確保してる奴なんて滅多にないはずだが
0503デフォルトの名無しさん
2016/02/10(水) 13:22:20.62ID:BgAJpbAv0504デフォルトの名無しさん
2016/02/10(水) 13:35:00.71ID:CcpqYYAqもはや中学生の妄想レベル。
0505デフォルトの名無しさん
2016/02/10(水) 14:28:55.17ID:cNfi8Aotスキルもないくせにエラソーなことほざくアホどもとは付き合ってられんわ
>>502
>どの API がコケるんだ?
>プリミティブな API で内部でメモリー確保してる奴なんて滅多にないはずだが
だからPostMessageすら失敗するような状況だって言ってるだろ
思い込みの「はず」で語ってくれるなよ
0506デフォルトの名無しさん
2016/02/10(水) 14:36:37.53ID:CcpqYYAqお前のアプリがヘボでPostMessageを呼び出す前にこけてるだけ。
そんな事もわからない中学生だから妄想って判断したんだよ。
0507デフォルトの名無しさん
2016/02/10(水) 14:37:27.03ID:2z9ZUJCVまだまだ下げるよ!
0508デフォルトの名無しさん
2016/02/10(水) 14:38:27.35ID:CcpqYYAq妄想中学生
0509デフォルトの名無しさん
2016/02/10(水) 14:58:55.83ID:cNfi8AotPostMessageの戻り値を見たこともないゴミは黙ってろって
妄想中学生はお前だよお前
回避?何のことだね
回避できない状況のことを言ってるんだが
0510デフォルトの名無しさん
2016/02/10(水) 16:16:55.13ID:CcpqYYAq「お前のアプリがヘボ」という結論しか出てこないな。
しかも、根本的になおさずにメッセージキュー拡げて対応とか。中学生プログラマらしいや。
0511デフォルトの名無しさん
2016/02/10(水) 16:22:50.22ID:OnEbfKeK取得方法はOSによって違うし、メモリーと言っても色々ある
とりあえず Windows なら GetProcessMemoryInfo 辺りでググってみて
0512デフォルトの名無しさん
2016/02/10(水) 16:25:20.02ID:WclI5GwYつまり何にも対処できてないのに対処したとか大ボラふいてたわけだ
0513デフォルトの名無しさん
2016/02/10(水) 17:09:41.86ID:cNfi8Aotお前らみたいな低能が作った穀潰しゴミソフトがメモリを食いつぶし続けてる時の
対処法なんて限られてるんだよ己の無能力を自覚してもう黙ってれよ
0514デフォルトの名無しさん
2016/02/10(水) 17:37:32.35ID:CcpqYYAqhttp://stackoverflow.com/questions/29567233/am-i-doing-anything-wrong-if-postmessage-returned-error-not-enough-quota
メッセージキュー拡げて対応完了 キリッ wwww
0515デフォルトの名無しさん
2016/02/10(水) 17:47:40.99ID:cNfi8Aotメッセージキュー拡げるとかそういう話じゃないからw
お前みたいなクズが作ったソフトがメモリを食いつぶしてる状況で生き残らなきゃ
いけないソフトを作らなきゃいけないハメになることはお前らには死ぬまで無いんだからw
0516デフォルトの名無しさん
2016/02/10(水) 17:51:17.29ID:CcpqYYAq論理が破綻してるぞ
0517デフォルトの名無しさん
2016/02/10(水) 18:02:45.61ID:cNfi8AotPostMessageが失敗したってことを認識できればそれなりの対処法はあるが
お前みたいな低能に対処できる根本的な方法はない
0518デフォルトの名無しさん
2016/02/10(水) 18:15:32.39ID:OnEbfKeK> スキルもないくせにエラソーなことほざくアホどもとは付き合ってられんわ
苦し紛れに出して来たブロスセ数で玉砕しまくったアホに言われてもねえ w
>>513
> 対処法なんて限られてるんだよ
でも具体的にその方法は書けない
妄想ですから〜
ってオチ? w
そもそも >>476 の監視ソフトで PostMessage を使うこと自体がバカっぽい
0519デフォルトの名無しさん
2016/02/10(水) 18:35:15.27ID:cNfi8Aotそろそろ自分の愚かさを認識しろよ超絶低能
0520デフォルトの名無しさん
2016/02/10(水) 18:43:33.84ID:cNfi8Aotお前は低能くんにありがちなあつかましい自尊心に基づいて喋ってる
0521デフォルトの名無しさん
2016/02/10(水) 18:56:15.68ID:VhPZ+OLxプログラマの端くれならコードで語れ。
どうせ守秘義務がどうとか無知には解らんだの捨て台詞しか書けねえとはわかっているがね。
0522デフォルトの名無しさん
2016/02/10(水) 19:01:36.21ID:cNfi8Aot0523デフォルトの名無しさん
2016/02/10(水) 19:04:02.17ID:VhPZ+OLxそのまま笑い死んでくれてもいいぞ。
0524デフォルトの名無しさん
2016/02/10(水) 19:06:27.25ID:x/NF9K0j0525デフォルトの名無しさん
2016/02/10(水) 19:11:44.13ID:sTnZ5Yh70526デフォルトの名無しさん
2016/02/10(水) 19:46:51.10ID:b+YmgAEw無理でしょ
プロセス数の話ですら俺がググってちょっと具体的なこと書いたら、一切触れなくなったぐらいだし w
コード書けるかどうかも怪しいレベルだと思う
0527デフォルトの名無しさん
2016/02/10(水) 19:53:57.44ID:6eyh9AMRhttp://simplearchitect.hatenablog.com/entry/2016/02/10/175238
0528デフォルトの名無しさん
2016/02/10(水) 20:20:13.29ID:+sMp0qjD0529デフォルトの名無しさん
2016/02/10(水) 22:19:50.30ID:cNfi8Aotバーカシネ
>Windows は明示的な上限はないけど、8GB メモリーで 7,000個弱
>実機で確認すればすぐわかる
お前ごときが実機で確認した値なんてなんの意味もないんだよ
上限なんて無くメモリ量で決まる
もっとも、これは最大プロセス数なんてどうでもいい話で
一匹の低能が作ったクソゴミソフトがメモリを食いつぶすすのを発見し
そいつを血祭りにあげようというのが目的だったんだが?
ちなみにそいつはもう死んだ
0530デフォルトの名無しさん
2016/02/10(水) 22:27:00.54ID:lc1dGjcs0531デフォルトの名無しさん
2016/02/10(水) 22:30:42.73ID:9qL9Qa6r階段状に上昇するなんてDDKのドキュメントに書いてある
けどなぁ
WDKとは言わないがSysinternalぐらいは目を通すのお勧め
0532デフォルトの名無しさん
2016/02/10(水) 22:31:02.91ID:VhPZ+OLx構って損した
0533デフォルトの名無しさん
2016/02/10(水) 22:32:58.64ID:cNfi8Aot下手したらそのせいで無罪なのに過労死する奴が出てもおかしくない状況だったんだよ
0534デフォルトの名無しさん
2016/02/10(水) 22:36:50.07ID:cNfi8Aotこういう行動パターンを示す奴とは関わっちゃいけない<俺
0535デフォルトの名無しさん
2016/02/10(水) 22:37:11.43ID:BsX2uww2断片化もするしな
0536デフォルトの名無しさん
2016/02/10(水) 22:38:16.88ID:VhPZ+OLx過労死なんざ知らんね、そんなのどうでもいい。
勝手に死なせておけばいい話。嫌ならトンズラすればいい。
ついでにお前も後を追えばもっと良い。
0537デフォルトの名無しさん
2016/02/10(水) 22:41:13.17ID:BsX2uww2パフォーマンスカウンタで全プロセスのメモリ消費のグラフを取れば良いんでは…
perfmon→データコレクタセット→ユーザー定義、
以下ウィザードに従って全プロセスか怪しいプロセスにカウンタを仕掛ける
Private Bytesが主なターゲット。
場合によってはWorking Setも気にする
0538デフォルトの名無しさん
2016/02/10(水) 22:41:13.81ID:cNfi8Aotはいはい極悪低能プログラマの本音を聞きました
0539デフォルトの名無しさん
2016/02/10(水) 22:44:30.04ID:BsX2uww2他のプロセスがPostMessage()に失敗するまでメモリ不足になるかっていうと疑問
リークするだけなら(アクセスされていないのだから)まずそいつがディスクに掃き出されるのでは…
0540デフォルトの名無しさん
2016/02/10(水) 22:48:42.82ID:EIvsPcYN> お前ごときが実機で確認した値なんてなんの意味もないんだよ
ググったって書いてあるのにバカすぎるだろ
https://technet.microsoft.com/ja-jp/windows/mark_04.aspx
自分の為に確認してくれるとかバカに限って自意識過剰なんだから笑えるわ
> もっとも、これは最大プロセス数なんてどうでもいい話で
だから固定で持っとけ
って言う話なのに自分で勝手に難しくして自爆してるだけ
> ちなみにそいつはもう死んだ
相変わらず技術的な話は全くなし w
0541デフォルトの名無しさん
2016/02/10(水) 22:48:59.49ID:cNfi8Aotそれがそれで済む状況ではなかったんだよ
どれかのプロセスが何かの条件によってメモリを食いつぶす行為に走りだす
そのせいで他の善良なプロセスまで巻き添えにする
その為パフォーマンスカウンタの特別版を作る必要があった
もうこの話はいいです。何年も前のいやな思い出だから
0542デフォルトの名無しさん
2016/02/10(水) 22:53:15.12ID:cNfi8Aotいつまでそれにこだわってるんだよ低能
ググってくれてご苦労様だけど(後学のために頭の片隅には置いておいてやるよ)
最大プロセス数なんて全く関係ない話だって言ってるだろ
0543デフォルトの名無しさん
2016/02/10(水) 22:58:22.56ID:WclI5GwYワロタ確かにこれでいいわ
>>541
パフォーマンスカウンタすら失敗する()なら
メモリ関連APIをHookかInjectionして
使用量が一定以上超えたらkillでも良いわけ
そういう一連の馬鹿発言からして
まともにプログラム作ってるとは言い難いな
0544デフォルトの名無しさん
2016/02/10(水) 22:59:37.61ID:EIvsPcYNまあ普通そうするわな
わざわざ中途半端なツール作ってドヤ顔するのが趣味なんだろ w
0545デフォルトの名無しさん
2016/02/10(水) 23:05:47.98ID:cNfi8Aotよく分かるエピソードでしたチャンチャン
0546デフォルトの名無しさん
2016/02/10(水) 23:20:15.88ID:WclI5GwYお前の言う実務は2chでの妄想活動だろ?
んなもん使い物にならなくていいわw
0547デフォルトの名無しさん
2016/02/10(水) 23:21:04.10ID:VhPZ+OLx0548デフォルトの名無しさん
2016/02/10(水) 23:24:21.16ID:cNfi8Aot0549デフォルトの名無しさん
2016/02/10(水) 23:28:04.89ID:+sMp0qjD0550デフォルトの名無しさん
2016/02/10(水) 23:28:29.01ID:EIvsPcYN0551デフォルトの名無しさん
2016/02/10(水) 23:29:05.09ID:cNfi8Aot足を引っ張ることしかしかしない有害人物どもの自己保存言動パターンはいつもこういうのです
0552デフォルトの名無しさん
2016/02/10(水) 23:34:16.19ID:lc1dGjcsつまらん
0553デフォルトの名無しさん
2016/02/10(水) 23:44:44.85ID:VhPZ+OLx0554デフォルトの名無しさん
2016/02/10(水) 23:45:54.18ID:lc1dGjcsはよ病院に行った方がいい
0555デフォルトの名無しさん
2016/02/10(水) 23:47:38.44ID:WclI5GwYこういう真面目ぶってる不誠実な人間ほど、
誠実な他人に助けを求めるのは世の常だな
0556デフォルトの名無しさん
2016/02/10(水) 23:53:00.48ID:WclI5GwYごめん謝るわw
0557デフォルトの名無しさん
2016/02/11(木) 00:02:18.12ID:LEO/MbWa0558デフォルトの名無しさん
2016/02/11(木) 00:09:28.61ID:rWlIZ3EB極端なリソース不足に陥った時の対処を知らない低能が
かつての自分の苦労をドヤ顔で自慢したら、
同レベルの低能がアホなレスしてカオスになった
0559デフォルトの名無しさん
2016/02/11(木) 00:09:54.31ID:vxNioHuU0560デフォルトの名無しさん
2016/02/11(木) 00:20:41.21ID:vOJNqTQW0561デフォルトの名無しさん
2016/02/11(木) 00:42:04.61ID:ZvFHDsOW参加したかったなら今から参加しても良いんだぞ
ぜひ有能クンの高度な技術を披露したまえ
0562デフォルトの名無しさん
2016/02/11(木) 00:42:45.47ID:ZvFHDsOW0563デフォルトの名無しさん
2016/02/11(木) 01:02:36.71ID:xFHLdclaこういう殺伐さと生暖かさが入り混じったスレって、もしかして古今東西2chだけ?
0564デフォルトの名無しさん
2016/02/11(木) 04:20:00.07ID:pNz7UH/Bこれなんでエラーになるかご存知の方いませんか。
循環参照だと思うのですが、どう解決するべきか困っています。
普段からあんまり凝ったことしないのでこの規模はほとんどないです。
VCで開発していて、ソース分割しています。
内容は、ヒットアンドブローのホストクライアント型の試験みたいなもんです。
0565デフォルトの名無しさん
2016/02/11(木) 04:32:08.20ID:COETO4tDエラーの理由はエラーメッセージ書いてあるだろ。
一般的に A, B が循環参照になっているなら A, B をひとつにまとめて C としてしまうか、
あるいは A, B から循環参照を生じさせている部分を新たに C に抽出して A, B ともに C を
参照するようにするか、という解決方法がとれることが多いと思う。
そのコードもたぶんこれでいけるんじゃないの?
0566デフォルトの名無しさん
2016/02/11(木) 04:40:01.55ID:pNz7UH/B失礼かもですが、もうちょっと詳しくお願いします。
普段やらないことやってるので何が起きてるのか把握していません。
typedefを切り離せってことですか?
0567デフォルトの名無しさん
2016/02/11(木) 04:42:30.20ID:COETO4tD手取り足取り教えるつもりは無いよ。どうなればいいのかよくわかってないし。
「typedefを切り離せってこと」かもしれないと思うなら、試してみればいいでしょ。
0568デフォルトの名無しさん
2016/02/11(木) 04:48:34.82ID:pNz7UH/Bうーん。切り離したくないんですよねぇ。
明日考えよ。
0569デフォルトの名無しさん
2016/02/11(木) 05:49:59.07ID:4ThVUQw6ICodeBreakerClientを参照しているメンバ関数を全て
ICodeBreakerClientの定義の下に持っていけば
あっさり解決するような気がするけど。
0570デフォルトの名無しさん
2016/02/11(木) 05:57:04.43ID:4ThVUQw6メンバ関数の宣言と定義の違いは分かる?
0571デフォルトの名無しさん
2016/02/11(木) 05:58:04.84ID:r+XipyqSまだうだうだ言ってるのかw低能くんは暇だねえある意味羨ましいよ
>PostMessageが低メモリ下でFAILする根拠
根拠だと?アホまるだしだな。当然根拠は実験結果だよ
お前試したことないだろ
0572デフォルトの名無しさん
2016/02/11(木) 06:12:06.03ID:r+XipyqS0573デフォルトの名無しさん
2016/02/11(木) 06:12:25.49ID:pNz7UH/B回答ありがとうございます。
一応定義と宣言の区別はついてると思います。
原因はワンヘッダーにがーっと書いてるからですかね。
CPPに分けてみるか。
0574デフォルトの名無しさん
2016/02/11(木) 06:39:24.85ID:rWlIZ3EBお前にヒントをやろう
>>509-510を読め
>>510はリファレンスを読むオツムが無かったので勘違いレスをずっと続けている
0575デフォルトの名無しさん
2016/02/11(木) 06:42:16.64ID:vxNioHuU>>>599
>まだうだうだ言ってるのかw低能くんは暇だねえある意味羨ましいよ
>>PostMessageが低メモリ下でFAILする根拠
>根拠だと?アホまるだしだな。当然根拠は実験結果だよ
>お前試したことないだろ
実験結果wwww やっぱり中学生。wwww
そんな事言ってんのは世界中でお前だけだよ。
今回は特別に教えてやろう。(爆笑)
低メモリ下でお前のヘボアプリがメッセージ処理しきれないのが真の原因。
つまりヘボアプリの作りが悪い。世界中で同じ質問した質問者がもらった答えと同じだったな。
0576デフォルトの名無しさん
2016/02/11(木) 06:56:49.06ID:r+XipyqSああこいつだったか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がエラーを返すのは常識で
お前だけだよそこにケチつけてるバカは
0577デフォルトの名無しさん
2016/02/11(木) 07:34:36.75ID:WJf9jt/h専ブラ使えよ
フルボッコされた涙目だとアンカーも付けにくいだろ w
0578デフォルトの名無しさん
2016/02/11(木) 07:55:30.76ID:vxNioHuU> 低メモリ下の話なんて見つからないんだが
当たり前だ。世界中でそんな結論に至った低能はお前だけだという証明。
今回も特別に教えてやろう。エラーがでたらエラーの理由を調べなきゃダメだぞ。中学生。
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が発生する事が確認できる。
お前のヘボアプリが原因だな、証明終了。
0579デフォルトの名無しさん
2016/02/11(木) 08:27:04.76ID:pNz7UH/Bおかげさまでコンパイルも無事通り最初のデバッグができました。
リファレンスにタコなAI突っ込んどいたので誰か遊んでください。
ありがとうございました。
一応ライセンスはMITライセンスでいいです。
自己責任でおながいします!
0580デフォルトの名無しさん
2016/02/11(木) 08:35:31.59ID:LEO/MbWa0581デフォルトの名無しさん
2016/02/11(木) 08:55:50.21ID:vxNioHuUID:r+XipyqSはシステムリソースを食い尽くすアホアプリを特定する監視プログラムを作ろうとして
プライベートリソースを食い尽くすアホ**2アプリを作ってしまった無能。
ID:rWlIZ3EBは話題についてこれない低脳。無視して良い。
0582デフォルトの名無しさん
2016/02/11(木) 09:20:37.71ID:JNPPvkDO0583デフォルトの名無しさん
2016/02/11(木) 09:33:17.55ID:EuRhj+pR0584デフォルトの名無しさん
2016/02/11(木) 09:34:54.74ID:OZhLkZUr0585デフォルトの名無しさん
2016/02/11(木) 09:50:04.55ID:pNz7UH/B自分に必要なライブラリスクラッチしてると実力つくぞ。
ただ、環境依存系はきついけど。
0586デフォルトの名無しさん
2016/02/11(木) 09:57:52.64ID:rWlIZ3EBしかし>>576がリファレンス読めない馬鹿ではなく
リファレンスも読もうとしない低能だったとは
0587デフォルトの名無しさん
2016/02/11(木) 10:01:08.51ID:ZvFHDsOWこのアホさ加減から言ってID:rWlIZ3EB=ID:cNfi8Aotだろ
別人装ってるけどなw
0588デフォルトの名無しさん
2016/02/11(木) 10:49:54.44ID:vxNioHuU0589r
2016/02/11(木) 10:54:32.20ID:ECJX98k8なんかWin+VS環境が多い印象なんだが、LinuxやMacでClang使ってる奴はこのスレでは少数派?
0590デフォルトの名無しさん
2016/02/11(木) 11:36:47.06ID:unvLhFXs0591デフォルトの名無しさん
2016/02/11(木) 13:29:43.31ID:WJf9jt/h本人以外: またオナッてら
0592デフォルトの名無しさん
2016/02/11(木) 13:32:04.04ID:r+XipyqSアホすぎて返す言葉もないわ
お前が引用した文はメッセージキューがいっぱいになったときの挙動だろうが
それのどこに低メモリ下の話があるんだよ
ERROR_NOT_ENOUGH_QUOTAなんてお前が勝手に引っ張り出してきただけで
俺が言ってるのはキュー溢れの話じゃないから
何が「証明終了」だよこのクソバカ
0593デフォルトの名無しさん
2016/02/11(木) 13:39:36.40ID:r+XipyqS>PostMessageがFAILするヘボアプリなんか書いたことが無いので、試しにCreateWindow直後に
>while (PostMessage(hWnd, WM_NULL, 0, 0));
>するプログラムを書いてみると、ERROR_NOT_ENOUGH_QUOTAが発生する事が確認できる。
得意気に言ってるけどそんなもん当たり前の話だよ
メッセージキューだって無限じゃないんだから
まずは低メモリ下での実験をして低メモリなだけじゃPostMessageがエラーを返すことはない
という証明をしろよ
この低能シッタカくん
0594デフォルトの名無しさん
2016/02/11(木) 13:46:20.87ID:COETO4tDリファレンスには「低メモリ下の話」は載ってないってことだよね?
リファレンスに載ってる ERROR_NOT_ENOUGH_QUOTA と "5 (access denied)" 以外の
どのエラーコードが返ってきたの?
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms681381%28v=vs.85%29.aspx
0595デフォルトの名無しさん
2016/02/11(木) 13:57:39.95ID:r+XipyqSさあもう10年以上もことで何のエラーだったかは覚えてないけど
低メモリ下ではPostMessageがエラーを返すことは事実だよ
newとかmallocが失敗するようになる前にそうなる。
XPだったと思うけどもしかしたらWindows2000だったかも知れん。
その監視プログラムのソースは持ってるから再び試すことは可能ではあるけど
そこまで暇人じゃない。
まあOSバージョンが何にしろ低メモリ状況ではAPIがちゃんと動けなくなることがあるなんていうのは
当たり前の話だと思うが???
0596デフォルトの名無しさん
2016/02/11(木) 14:07:17.11ID:r+XipyqSその証明プログラムを書くなんて簡単な事だよ
まずそれをやれよ
俺は今超絶忙しいから、低メモリ状況ではAPIがエラーを返すことがあるなんて当たり前のことを
わざわざ証明する気にはなれないね悪しからず
こんな当たり前のことも理解できない低能はどんだけ俺に迷惑かければ気が済むんだよ???
0597デフォルトの名無しさん
2016/02/11(木) 14:10:14.16ID:xD0FV+ye0598デフォルトの名無しさん
2016/02/11(木) 14:13:42.80ID:Nr5EvEk2いまいちイメージができない
0599デフォルトの名無しさん
2016/02/11(木) 14:15:13.30ID:r+XipyqS過去の苦い思い出があるからなるべくそれは避けたいんだけど。。。
0600デフォルトの名無しさん
2016/02/11(木) 14:24:50.96ID:r+XipyqSそんな修羅場を乗り越えたことがある者だけが俺に向かって石を投げなさい(救世主モード)
0601デフォルトの名無しさん
2016/02/11(木) 14:34:35.16ID:COETO4tDん?それじゃ ERROR_NOT_ENOUGH_QUOTA だった可能性も否定もできないってことになるね。
https://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/8fcf1a75-8cbb-4523-991f-88e0088ac524
PostMessage() の本来の動作に追加のメモリ確保が必要なわけでもないんで、
低メモリ状況で失敗するのが当たり前とは思わないなぁ。
低メモリ→スラッシングなどで極端にキューの取出しが滞る→キューがいっぱい、っていう
シナリオもありそうだし。10年以上前ならなおさら。
念のため言っとくけど、関数が失敗する理由がドキュメントですべて列挙されてるとは思わないから、
他のエラーの可能性を否定してるわけじゃないよ。そういう、ドキュメントに載ってないエラーの例が
あれば面白いなぁと思ったまで。
0602デフォルトの名無しさん
2016/02/11(木) 14:40:04.55ID:2zWchetY回避方法も書けない
ネタ決定でしょ
まともなプログラマなら、自分は覚えてなくてもすぐエラーコードや回避方法はわかるはずだから
0603デフォルトの名無しさん
2016/02/11(木) 14:59:37.10ID:8QEa0xty今。
ここで。
0604デフォルトの名無しさん
2016/02/11(木) 15:17:40.53ID:rWlIZ3EB・リファレンス上、メモリ不足でエラーにならないとは書かれていないようである
・実際にメモリ不足でエラーになったと主張する>>509が登場
この状況なんだから「メモリ不足エラーというリファレンス上許された挙動があり得ないと言うならそれを証明しろ」
と言えばいいのにr+XipyqSは
0605デフォルトの名無しさん
2016/02/11(木) 15:37:44.95ID:r+XipyqSこういう当たり前の主張にしつこくケチつけなきゃいられないようなタイプのクズ
っていうのは現実の社会にもそれなりに実在するから真面目な人は気を付けたほうがいいよ
もっともここでそれをやってるのは現実の社会から干されたどうしようもないゴミクズだろうが
0606デフォルトの名無しさん
2016/02/11(木) 16:06:50.17ID:8QEa0xty使えねえ奴だな。同類扱いされるぞ?
0607デフォルトの名無しさん
2016/02/11(木) 16:31:59.03ID:r+XipyqS発動させるときは不言実行だからな
お前は対象ですらないけどw
0608デフォルトの名無しさん
2016/02/11(木) 16:40:31.83ID:r+XipyqS悪いけどお前らみたいなへボプログラマじゃないんでね
誰も知らないうちにターゲーットはご臨終(ナムナム)になってて
俺はゲラゲラ笑ってる
0609デフォルトの名無しさん
2016/02/11(木) 16:44:15.33ID:8QEa0xty夢の中で好きなだけ発動させてなさいね
0610デフォルトの名無しさん
2016/02/11(木) 16:45:37.29ID:Qn21xKPQ> このアホさ加減から言ってID:rWlIZ3EB=ID:cNfi8Aotだろ
俺もだんだんそう見えてきたw
リファレンス、リファレンス、リファレンス
リファレンス上、リファレンス上、リファレンス上
0611デフォルトの名無しさん
2016/02/11(木) 16:45:46.47ID:rWlIZ3EB「真面目なエンジニアさんはこの状況をよく見てください」
「間接的にとはいえ人を殺すというのは、そいつがどんなクズだったとしても精神的に深いキズを残す」
「修羅場を乗り越えたことがある者だけが俺に向かって石を投げなさい(救世主モード)」
ここは中学校じゃないぞ
0612デフォルトの名無しさん
2016/02/11(木) 16:50:37.94ID:r+XipyqSお前らなんてそれ未満だからならw
0613デフォルトの名無しさん
2016/02/11(木) 16:53:21.89ID:r+XipyqS『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
まずこの当たり前の主張が誤りであることを証明しろよ
それが出来ないならお前ら共には生きる権利はない
0614デフォルトの名無しさん
2016/02/11(木) 17:02:41.95ID:R5nKPKgbここ最近で一番ひどい
0615デフォルトの名無しさん
2016/02/11(木) 17:15:45.76ID:r+XipyqSもうそろそろチョン認定してくれてもいんだぜw
0616デフォルトの名無しさん
2016/02/11(木) 17:19:03.88ID:rWlIZ3EB今さらだが>>586のアンカーが間違ってたわ
576でなく578だったスマン
0617デフォルトの名無しさん
2016/02/11(木) 17:19:34.12ID:R5nKPKgb0618デフォルトの名無しさん
2016/02/11(木) 17:25:34.85ID:rWlIZ3EB腹痛ぇ
お前はどこまで日本語弱いんだ
0619デフォルトの名無しさん
2016/02/11(木) 17:30:57.72ID:r+XipyqSさいならゴミクズ有害低能くんども
0620デフォルトの名無しさん
2016/02/11(木) 17:31:22.96ID:R5nKPKgbあーはいはい、
>このクソバカ
>この低能シッタカくん
>こういう当たり前の主張にしつこくケチつけなきゃいられないようなタイプのクズ
>現実の社会から干されたどうしようもないゴミクズだろうが
>お前ら共には生きる権利はない
↑のことですね
0621デフォルトの名無しさん
2016/02/11(木) 17:35:34.67ID:S066gs71流れ作って>>619で緊急脱出したつもりなんだからw
0622デフォルトの名無しさん
2016/02/11(木) 17:44:20.81ID:chyZ04S/>>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がメモリ不足でコケるかどうかという話になり、
リファレンス上にはメモリ不足に関する記述が無いんだがって話が出てきて
お前らプログラマなら実際に動かして試せよ・・・・・・
俺は手元にあらゆるソフトがメモリ不足でコケるような環境にしても良いマシンが無いからやらないけど。
0623デフォルトの名無しさん
2016/02/11(木) 17:49:36.27ID:3YTkrGr2その中で俺の発言は>>460だけなのだが
日本語が読めなかったのか?
0624デフォルトの名無しさん
2016/02/11(木) 17:53:09.04ID:r+XipyqSみたいな当たり前のことに何故かしつこくケチを付け人格攻撃まで始めるキチガイ
というのは不思議なことにこの社会には少なからず実在します
真面目な人はこのタイプには十分に注意してくださいね
もっとも、ここでそれをやってるクズはゴミ社会すらから爪弾きにされたようなタイプでしょうがw
0625デフォルトの名無しさん
2016/02/11(木) 17:53:50.89ID:chyZ04S/って読んだんだけど間違ってた?
# 悪いのは目ではなく頭の方です
0626デフォルトの名無しさん
2016/02/11(木) 17:59:08.81ID:R5nKPKgbあーはいはい、
>このクソバカ
>この低能シッタカくん
>こういう当たり前の主張にしつこくケチつけなきゃいられないようなタイプのクズ
>現実の社会から干されたどうしようもないゴミクズだろうが
>お前ら共には生きる権利はない
>しつこくケチを付け人格攻撃まで始めるキチガイ ← New
>低脳どもとの会話 ← New
>ゴミクズ有害低能くんども ← New
>それをやってるクズはゴミ社会すらから爪弾きにされたようなタイプ ← New
↑のことですね
0627デフォルトの名無しさん
2016/02/11(木) 18:14:00.19ID:vxNioHuU1816 28 9999 Not enough quota is available to process this command.
APIの返り値確認しても、エラーコードを取得しないと意味がないぞ。中学生。
処刑プログラムか楽しみだなあ。
0628デフォルトの名無しさん
2016/02/11(木) 18:47:47.05ID:rWlIZ3EBメモリ不足と関係無いエラーを起こすとんちんかんなプログラムを見せて、
どうすると人はここまで馬鹿になれるのだろうか
0629デフォルトの名無しさん
2016/02/11(木) 18:54:09.21ID:vxNioHuU特別に教えてやろう。(爆笑)
> メモリ不足と関係無いエラーを起こすとんちんかんなプログラムを見せて、
VirtualAllocって知ってる?
> newとかmallocが失敗するようになる前にそうなる。
アプリのメモリ管理とuser32のメモリ管理を混同してるようだから、知らなくても無理はないか。
処刑プログラム待ってるよ。
0630デフォルトの名無しさん
2016/02/11(木) 19:02:18.97ID:8QEa0xtyなんとも不可解な話だ
0631デフォルトの名無しさん
2016/02/11(木) 19:23:27.23ID:WJf9jt/h> この状況なんだから「メモリ不足エラーというリファレンス上許された挙動があり得ないと言うならそれを証明しろ」
>>613
> 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
> まずこの当たり前の主張が誤りであることを証明しろよ
低脳にありがちの悪魔の証明
PostMessage のエラーコードと回避方法書くだけでいいのに
何故かやらない
どうみても妄想でしょ
0632デフォルトの名無しさん
2016/02/11(木) 19:23:30.50ID:UQTXGuAz実に香ばしい
0633デフォルトの名無しさん
2016/02/11(木) 19:32:15.69ID:rWlIZ3EB根拠も無く仕様を否定しておいて、悪魔の証明なので根拠を出せないとか
ここまで頭が悪いと生きているのも辛いだろうな
リファレンス「メモリ不足エラーはあり得る」
↓
>>509「確かに俺はかつて見た」
↓
馬鹿「あり得ない」「証拠を出せ!」「無いことを証明するのは悪魔の証明だ!」
0634デフォルトの名無しさん
2016/02/11(木) 19:33:41.27ID:vxNioHuU> リファレンス上にはメモリ不足に関する記述が無いんだがって話が出てきて
・PostMessageの動作はMSG構造体をキューに追加して、なんらかの方法で通知
・PostMessageは高速に動作しなけらばならない
・MSG構造体のサイズは高々28バイトである
・通知プリミティブに何を使ってるかわからないけど、メモリのアロケートは不要
これらから、PostMessageのつど、メモリを動的に確保してるはずがないと推測できる
じゃ、なんでFAILするかというとリファレンスにのってるERROR_NOT_ENOUGH_QUOTAが最有力
ID:rWlIZ3EBはPostMessageがFAILした事を観測して、おバカな結論にたどり着き、なにをやってるかわからないクソアプリを作ってしまったでゴザル
不正なhWndを渡せば別のエラーが発生するだろうけど、あまりに初歩的なので除外。
でもID:rWlIZ3EBはそれすら可能にする無能レベル
0635デフォルトの名無しさん
2016/02/11(木) 19:37:09.82ID:vxNioHuU> 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら
> その証明プログラムを書くなんて簡単な事だよ
> まずそれをやれよ
やってあげたのに、プログラムを読めなかったでゴザルの巻
0636片山博文MZ ◆T6xkBnTXz7B0
2016/02/11(木) 19:53:16.50ID:RYWEZJ3R_ _ _ _ _ (切り取り線) _ _ _ _ _
ここから下は二月号のおまけだよ!
0637デフォルトの名無しさん
2016/02/11(木) 19:54:52.75ID:99mWF8FH0638デフォルトの名無しさん
2016/02/11(木) 19:55:03.32ID:chyZ04S/俺もPostMessageがメモリを動的に確保するなんて話は信じられん
が、実際にそうなったと言ってるのだからそういう夢でも見たんだろう。
>>627
4MB単位じゃなくて、もうちょっと細かい単位で確保しても同じ結果になるよね?
ページの粒度はIntel系なら4KBだと思うんだけど
誰かWindowsをGPLにしてくれ。読みたい時に読むから。
0639デフォルトの名無しさん
2016/02/11(木) 19:56:07.63ID:chyZ04S/0640デフォルトの名無しさん
2016/02/11(木) 20:04:24.71ID:vxNioHuUまあ、無能とアスペ、どっちも社会の役に立たないクズなのででうでもいいけど。
ちなみにXp64で32bitアプリとしてコンパイルしたのを実行したら
1816 27 10000 unknown error
2G弱でVirtualAllocが失敗するのはアプリのメモリ空間の制限だね
念のために言っとくけど、user32はアプリのメモリ空間で動作してるので、
「システム全体のメモリが不足する状況と違う」とかおバカな事を言いださないように
0641デフォルトの名無しさん
2016/02/11(木) 20:23:57.41ID:vxNioHuUみたのはPostMessageがエラーになる事だけだよ。
> さあもう10年以上もことで何のエラーだったかは覚えてないけど
とか言ってるけど、エラーコード取得したならそういう印象的なエラーは憶えている、
実際無能が服を着て歩いてるID:rWlIZ3EBでもエラー自体は憶えてたし。
エラーコードまで取得してなかったんだろうな。これが合理的な説明。
0642デフォルトの名無しさん
2016/02/11(木) 20:25:39.69ID:IhmK9YPs自作システムからとあるシステムを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 以外に自動メッセージを送信する関数はありますか?
0643デフォルトの名無しさん
2016/02/11(木) 20:49:05.18ID:vxNioHuU正 実際無能が服を着て歩いてるID:r+XipyqSでもエラー自体は憶えてたし。
0644デフォルトの名無しさん
2016/02/11(木) 20:49:36.44ID:WJf9jt/h> > さあもう10年以上もことで何のエラーだったかは覚えてないけど
> とか言ってるけど、エラーコード取得したならそういう印象的なエラーは憶えている
そもそもソースがあるらしい(>>595 で口走ってる)ので、まともなプログラマーならエラーコード見て回避策を講じてるはず
って >>602 で指摘したら、ガン無視 w
PostMessage がエラーになったから適当にメモリー解放したらたまたまうまくいった
⇒ 俺スゲー発見しちゃった!!
ってとこじゃね?
0645デフォルトの名無しさん
2016/02/11(木) 21:05:40.00ID:vxNioHuUもう一個根拠追加
・メッセージキューは固定長である
これらの事実からメッセージキューはMSG構造体のアレイだと思われる
28バイト*10000で高々280Kバイト、へみたいなもんだね
アレイならERROR_NOT_ENOUGH_MEMORYなんて発生するはずないね
0646デフォルトの名無しさん
2016/02/11(木) 21:11:11.48ID:WJf9jt/hとりあえずこの辺りを見てみて
http://m.chiebukuro.yahoo.co.jp/detail/q1047081310
0647デフォルトの名無しさん
2016/02/11(木) 21:27:36.84ID:rWlIZ3EBブロント級の迷言
0648デフォルトの名無しさん
2016/02/11(木) 21:44:18.34ID:r+XipyqSやれやれどうしようもない馬鹿揃いだな
こんなバカだから一日中張り付いてる暇があるんだな
>まともなプログラマーならエラーコード見て回避策
お前みたいな低能に言われなくても回避策は講じたよ
こういう状況では回避策なんてないという回避策だけどな
いい加減、自分が関わったことのない、これからも一生関わることのないような
事柄に知ったか発言するのは止めろ見苦しいぞ超絶低能
0649デフォルトの名無しさん
2016/02/11(木) 21:48:08.11ID:vxNioHuU> 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら
> その証明プログラムを書くなんて簡単な事だよ
> まずそれをやれよ
やってあげたけど、プログラム読めませんかあ?
0650デフォルトの名無しさん
2016/02/11(木) 21:52:48.88ID:r+XipyqS>俺もPostMessageがメモリを動的に確保するなんて話は信じられん
俺だって最初はビックリしたよ
でも低メモリ状況ではそういうことがあるというか、そもそも低メモリ下でAPIが
エラーを返しても誰も文句は言えないはずなのだが?
Windows7以降ではPostMessageの挙動は変わってるかもしれないけどね
気になるなら自分で試してみれば?極限的なリソース不足の時の
APIの挙動の詳細なんて再確認してやる暇なんてないし
0651デフォルトの名無しさん
2016/02/11(木) 22:00:10.03ID:r+XipyqS>やってあげたけど、プログラム読めませんかあ?
まさか>>627のことかw
> while (PostMessage(hWnd, WM_NULL, 0, 0))
VirtualAllocで6メガづつ確保するようなコードさらしてこの状況の確認になると思ってるのかwww
0652デフォルトの名無しさん
2016/02/11(木) 22:05:31.98ID:vxNioHuUxp64でもおなじ動作という事実には目をつぶるらしい
0653デフォルトの名無しさん
2016/02/11(木) 22:05:39.02ID:EuRhj+pR0654デフォルトの名無しさん
2016/02/11(木) 22:06:13.06ID:rWlIZ3EB「論理的思考が出来ない低能なんだろう」
ということを再確認しただけだったな
0655デフォルトの名無しさん
2016/02/11(木) 22:09:15.19ID:r+XipyqS変わったかもしれないだ
確認なんてしてねーよ話を捻じ曲げるな卑怯者
0656デフォルトの名無しさん
2016/02/11(木) 22:10:17.25ID:WJf9jt/hもう一回書くね w
>>602
> エラーコードも書けない
> 回避方法も書けない
>
> ネタ決定でしょ
0657デフォルトの名無しさん
2016/02/11(木) 22:12:35.67ID:vxNioHuU思ってるよ
user32はkernel32のGlobalAlloc,LocalAlloc
ntdllのRtlAllocateHeapしか使っていない。
VirtualAllocがFAILする状況を作り出せば、どれを使っていても同じ事
ゴブリンには理解出来ないらしいな
0658デフォルトの名無しさん
2016/02/11(木) 22:14:28.08ID:r+XipyqSこんなバカの相手をしてる俺って
0659デフォルトの名無しさん
2016/02/11(木) 22:20:44.44ID:vxNioHuU> 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら
> その証明プログラムを書くなんて簡単な事だよ
簡単な事なんだろ。
0660デフォルトの名無しさん
2016/02/11(木) 22:25:20.13ID:r+XipyqSGCC拡張だっけかこういうの
> WNDCLASS wclass = {
> .style = CS_HREDRAW | CS_VREDRAW,
まずはお前が試した環境(OS、コンパイラ)を書けよ
64メガブロックごとのVirtualAllocで俺が言ってるような現象が起こるわけないけどな
てか、こういう規格外コード書くなよ
0661デフォルトの名無しさん
2016/02/11(木) 22:26:47.70ID:rWlIZ3EBこのスレと関係無い別の言語なんです
0662デフォルトの名無しさん
2016/02/11(木) 22:28:40.57ID:vxNioHuU1816 60 10000 Not enough quota is available to process this command.
やはりERROR_NOT_ENOUGH_MEMORYは出ませんなあ
出るわけないけど
0663デフォルトの名無しさん
2016/02/11(木) 22:36:26.67ID:r+XipyqSプログラムを2作って1つはメモリをバカみたく確保しまくるやつ
それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの
ブロックを確保したり解放したりリークしたりする
もう一つは普通のシンプルなWindowsアプリで定期的(常識的なサイクルの範囲で)
にPostMessageを行う
間違っても
> while (PostMessage(hWnd, WM_NULL, 0, 0))
はやっちゃだめだぞ
0664デフォルトの名無しさん
2016/02/11(木) 22:38:12.36ID:vxNioHuU> GCC拡張だっけかこういうの
C99だよ。知らないの? ぷぷっ VS2012から使えるんじゃないかな。
2012はもう捨てたからあやふやだけど、2013では使える。
ゴブリンはCとC++の区別がつけられないようだ
おかしなレイヤが挟まるとイヤだから、直に叩けるCで確認するに決まってるだろ
0665デフォルトの名無しさん
2016/02/11(木) 22:41:11.32ID:vxNioHuUそれがuser32のPostMessageにどのように影響を及ぼすんだ?
user32は別プロセスからは完全に切り離されてるんだぞ。Win16じゃあるまいし。
別プロセスの影響を受けるのは「VirtualAllocでのメモリ確保」
0666デフォルトの名無しさん
2016/02/11(木) 22:41:26.83ID:r+XipyqSよっぽどの事がなければCなんてもう使わないし
てかここC++スレじゃなかったっけ?
0667デフォルトの名無しさん
2016/02/11(木) 22:43:37.14ID:ZvFHDsOW今度は本質と関係ない攻撃までして本当必死だなお前はw
ID:rWlIZ3EBも早く証明しろよできるんだろ?
0668デフォルトの名無しさん
2016/02/11(木) 22:44:41.23ID:Evsn43pT| |
\_/
| __
┴´ ``ヽ
/::::::::::|:::::: `ヽ てか、こういう規格外コード書くなよ
/:::\::::::::<● > `ヽ
(( / <●>::::::::::⌒ )
| ⌒(_人__) ノ | |
ヽ )vvノ: / ノノ
ヽ (__ン 人
人 \
/
0669デフォルトの名無しさん
2016/02/11(木) 22:47:27.18ID:rWlIZ3EBはて何か証明しないといけないことが有っただろうか?
ちなみにC99 designated initializerはVisual C++ 2013からだな
0670デフォルトの名無しさん
2016/02/11(木) 22:47:40.34ID:r+XipyqS>>665
64メガ単位のVirtualAllocじゃ俺の言ってる現象の確認になんてならないということは理解したか?
それにこれwwwは直したか
> while (PostMessage(hWnd, WM_NULL, 0, 0))
0671デフォルトの名無しさん
2016/02/11(木) 22:49:15.63ID:cll589HH0672デフォルトの名無しさん
2016/02/11(木) 22:57:33.08ID:rWlIZ3EB0673デフォルトの名無しさん
2016/02/11(木) 23:00:37.18ID:vxNioHuU> プログラムを2作って1つはメモリをバカみたく確保しまくるやつ
> それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの
> ブロックを確保したり解放したりリークしたりする
このバカはメモリ管理が階層化されている事を知らないのだろうか?
Win32サブシステムではメモリ管理はkernel32が担当し、ntdllから
VirtualAllocで切り出したメモリブロックを小分けにしてアプリに
渡すが、kernel32はアプリのプロセス空間にロードされているので、
> それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの
> ブロックを確保したり解放したりリークしたりする
こんな事しても他のプロセスにはなんら影響を与えない。
はあ、こんな初歩的な事すら知らないとは。絶句するしかないな。
0674デフォルトの名無しさん
2016/02/11(木) 23:06:42.15ID:vxNioHuU>よっぽどの事がなければCなんてもう使わないし
> newとかmallocが失敗するようになる前にそうなる。
mallocをC++でも使うのか? そりゃ使えるけど… ぷぷぷっ
>>672
> おかしなレイヤはともかく、C++スレで「Cに決まってるだろ」の後出しはマヌケ過ぎる
アスペは引っ込んでいようね。
http://codepad.org/NOUfjFJY
C, pasted 4 hours ago:
0675デフォルトの名無しさん
2016/02/11(木) 23:08:59.56ID:rWlIZ3EB知ってるぞ。コッソリ言語をCにしてたんだろ
まさにアスペの典型的行動だよな
0676デフォルトの名無しさん
2016/02/11(木) 23:11:08.81ID:IhmK9YPs自作システムからとあるシステムを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 以外に自動メッセージを送信する関数はありますか?
0677デフォルトの名無しさん
2016/02/11(木) 23:16:23.86ID:vxNioHuU既にヒントは出してるのに
> プログラムを2作って1つはメモリをバカみたく確保しまくるやつ
> それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの
> ブロックを確保したり解放したりリークしたりする
32bitアプリじゃどんなに頑張っても2G弱しかメモリ取れなくて、
お前のいってる状況にはならないわけだ。
> XPだったと思うけどもしかしたらWindows2000だったかも知れん
と言ってるわけなので、普及してなかったXp64じゃないだろうし。
> もう一つは普通のシンプルなWindowsアプリで定期的(常識的なサイクルの範囲で)
> にPostMessageを行う
> 間違っても
> > while (PostMessage(hWnd, WM_NULL, 0, 0))
> はやっちゃだめだぞ
これも合理的な意味がない。
ゴブリンなみの知能しかないらしいな
0678デフォルトの名無しさん
2016/02/11(木) 23:25:45.55ID:vxNioHuU全部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
で解説されてる
日本語版は必要なリンクが無く、「載ってねーぞ」となる場合が多い
0679デフォルトの名無しさん
2016/02/11(木) 23:31:45.37ID:rWlIZ3EB>それにこれwwwは直したか
>> while (PostMessage(hWnd, WM_NULL, 0, 0))
それこそが160レスも前から>>510が依怙地に心の拠り所としているものなのに…
おまえ:以前メモリ不足でエラーになった
↓
B:PostMessage呼び出し過ぎに決まってる
↓
おまえ:いやそうじゃなくてメモリ不足
↓
B:PostMessage呼び出し過ぎ!
PostMessage呼び出し過ぎ! ←ここで100以上のレスを消費
0680デフォルトの名無しさん
2016/02/12(金) 00:03:21.60ID:Ljz6MKRPすごいふんいきですね
0681デフォルトの名無しさん
2016/02/12(金) 00:09:39.46ID:fLx6I9W4But I, being poor, have only my dreams
I have spread my dreams under your feet
Tread softly because you tread on my dreams
0682デフォルトの名無しさん
2016/02/12(金) 00:40:10.02ID:dKyYxY1Q簡単にかけるんだろ。実行してやるからとっとと書けよ。
0683デフォルトの名無しさん
2016/02/12(金) 01:00:35.33ID:tA3EE8V1ID:r+XipyqS PostMessageが落ちる状況をワイの監視プログラムで乗り切った
ID:vxNioHuU いや、そんな状況ありえんだろ。PostMessageは仕様通りの動きしかしない。
でいいのかな?
ID:rWlIZ3EB ←んで、こいつは誰?
0684デフォルトの名無しさん
2016/02/12(金) 02:07:27.50ID:Ly2MKnK4例えスリープしてキューの消費を待とうがエラーを返すことはないぞ
つーか確認した
やっぱりお前も相当に頭悪いな
0685デフォルトの名無しさん
2016/02/12(金) 02:08:12.54ID:Ly2MKnK4変なやつを庇っちゃって後に引けなくなったアホだよw
0686デフォルトの名無しさん
2016/02/12(金) 02:11:51.19ID:Ly2MKnK4お前が指摘してる事ってあらゆることが全て的外れ
VirtualAllocじゃ1バイトで失敗するまでループしても結果は同じ
それよりお前の自作の処刑プログラムを俺に実行してみてくんない?w
超興味あるw
0687デフォルトの名無しさん
2016/02/12(金) 02:20:56.95ID:A6+sqZJrPostMessage やら SendMessage やらの話は↓こちらでどうぞ。
Win32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/
0688デフォルトの名無しさん
2016/02/12(金) 06:54:45.97ID:dKyYxY1QID:r+XipyqS PostMessageは低メモリ下でFAILする
ワイの監視プログラムはそれを乗り切った
ID:vxNioHuU いや、そんな状況ありえんだろ。
PostMessageがFAILするのはキューがあふれたから。(あふれた原因は当然、取り出してないから)
>ID:rWlIZ3EB ←んで、こいつは誰?
触っちゃいけないアスペ
0689デフォルトの名無しさん
2016/02/12(金) 08:02:11.03ID:W1VJFYp+仕様上は発明家ID:r+XipyqSが10年前に見た挙動が
起こりえないとは書かれてないぞ
ID:r+XipyqS PostMessageが落ちる状況をワイの監視プログラムで乗り切った。PostMessageは仕様通り。
ID:vxNioHuU いや、そんな状況ありえんだろ。PostMessageがFAILするのはキューがあふれたからに決まってる。ボクのPCで確認したもん。
0690デフォルトの名無しさん
2016/02/12(金) 08:47:36.66ID:hlhHAQgj> 仕様上は発明家ID:r+XipyqSが10年前に見た挙動が
> 起こりえないとは書かれてないぞ
起こると言うなら、そのエラーコードと回避方法を書けばいいだけ
まあ、書けない理由があるんだろ?
妄想で、引っ込みつかなくなったから
とかね (ニヤニヤ
0691デフォルトの名無しさん
2016/02/12(金) 09:52:01.35ID:2s3eP2W9検出できるなんてドキュメントなんて無いのに
それがまかり通るとか思ってること自体が
間違ってるってことに、なんで誰も指摘しないの?
ググってこのスレがヒットして
一般論だと勘違いが増えないことを
祈るのみだ。
0692デフォルトの名無しさん
2016/02/12(金) 10:01:16.83ID:dKyYxY1Q「オレは見た」「お前の再現プログラムはインチキ」「証明プログラムは簡単に書ける」
「VirtualAllocで一気に取ると再現しない、もっと小さいサイズ(ランダム)でalloc/freeすべし」
トドメが「7じゃ変わってるかも」
0693デフォルトの名無しさん
2016/02/12(金) 10:48:49.14ID:guNonXlHc++11と03両方の場合教えてください
0694デフォルトの名無しさん
2016/02/12(金) 10:51:40.09ID:YW9gyZktこのスレはズレたことを真顔で言い合うスレです
悪い意味での裸の王様はこのスレにたくさんおり
良い意味での子供はこのスレにはほとんどいません
誰もがバカの目には見えない服を着て戦っています
0695デフォルトの名無しさん
2016/02/12(金) 11:30:47.56ID:+xxm9BEP可能、とは?
0696デフォルトの名無しさん
2016/02/12(金) 12:09:40.44ID:nrgTBvRPコンパイルが通るか否かで言ったらどっちでも通る。
ただ、使う時に
hoge<'A'> foo;
とか書くことになるだろうから一体何を意味してんだか分からんだろうけど。
0697デフォルトの名無しさん
2016/02/12(金) 12:50:54.13ID:1YUHUC0Dわかるよ、顔のAAでしょ?
0698デフォルトの名無しさん
2016/02/12(金) 13:03:22.47ID:HGC0xuFL『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
どうしてこんな単純な当たり前な主張に必死になってケチをつけ続けるんでしょうか?www
そんな超絶低能キチガイだから一日中ここに張り付いて戯言垂れ流していられるんだな
羨ましい限りだよ
0699デフォルトの名無しさん
2016/02/12(金) 13:11:03.95ID:t3iUoxu40700デフォルトの名無しさん
2016/02/12(金) 13:14:35.06ID:hlhHAQgj> 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
> どうしてこんな単純な当たり前な主張に必死になってケチをつけ続けるんでしょうか?www
具体的に何も書かないチキン乙
あっ、書けないんでしたっけ? w
> そんな超絶低能キチガイだから一日中ここに張り付いて戯言垂れ流していられるんだな
ブーメラン乙
> 羨ましい限りだよ
羨ましくはないけど w
0701デフォルトの名無しさん
2016/02/12(金) 14:27:30.45ID:dKyYxY1QとっととPostMessageがERROR_NOT_ENOUGH_MEMORYでFAILする検証プログラムかけよ。
簡単なんだろ。実行はしてやるよ。
0702デフォルトの名無しさん
2016/02/12(金) 14:36:31.54ID:dKyYxY1Q10年前でもディスクは数十Gはあったはずだから、ページファイル使い尽くすなんて状況は発生しないよな
0703デフォルトの名無しさん
2016/02/12(金) 14:48:14.25ID:mCcpVV1b0704デフォルトの名無しさん
2016/02/12(金) 15:29:07.28ID:XKRoTCquページファイルの最大値指定してないの?
0705デフォルトの名無しさん
2016/02/12(金) 15:30:03.82ID:nrgTBvRP0706デフォルトの名無しさん
2016/02/12(金) 15:46:32.55ID:Ly2MKnK4そういう言い訳良いから早くPostMessageを低メモリで失敗させてくれませんかね?
0707デフォルトの名無しさん
2016/02/12(金) 15:47:00.71ID:Ly2MKnK40708デフォルトの名無しさん
2016/02/12(金) 15:49:33.84ID:hlhHAQgj実メモリー2GBでページング領域に数十GBも割り当てるとかバカすぎだろ…
今時もっさりするのが嫌で実メモリー4〜8GBとか積んで仮想記憶切る奴もいるぐらいなのに
0709デフォルトの名無しさん
2016/02/12(金) 15:53:58.60ID:Ly2MKnK40710デフォルトの名無しさん
2016/02/12(金) 15:56:02.47ID:dKyYxY1QNT4位までは頑張って色々設定してた気がする
2000以降はほとんどデフォルトだね
0711デフォルトの名無しさん
2016/02/12(金) 15:58:55.28ID:dKyYxY1Q言いがかりつける前によく読みたまえ。
0712デフォルトの名無しさん
2016/02/12(金) 16:01:04.55ID:mCcpVV1b保険として書き込みするのは許せるとしてがっつり読み込みまでするのはどういう管理しているんだと。
ノートでhddだからreadyboostしたらけっこう軽くなった。
0713デフォルトの名無しさん
2016/02/12(金) 16:03:16.55ID:dKyYxY1Qあと、仮想記憶切ってモッサリ解消って言うのは素人のおバカ設定だから
プロのソフトエンジニアがそんな事言ってたら笑われるぞ
0714デフォルトの名無しさん
2016/02/12(金) 16:24:44.45ID:Ly2MKnK4へ?何いってんの?
WinはRAMが十分にあってもすぐswapoutするから
抑制するために切るのって運用側でも定石だぞ?
0715デフォルトの名無しさん
2016/02/12(金) 16:54:06.96ID:dKyYxY1Q素人ブロガーのヨタ記事を信用しちゃたなんちゃってシス管か
ベンチマークも載せてないヨタ記事信用しちゃダメ
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.
自分で仮想記憶切ったときは非アクティブで放置してたアプリをアクティブにするスピードだけは向上したな。
0716デフォルトの名無しさん
2016/02/12(金) 17:00:52.86ID:Ly2MKnK4必死にググって探してきたの?
残念だったね
https://support.microsoft.com/ja-jp/kb/2659143
0717デフォルトの名無しさん
2016/02/12(金) 17:04:24.52ID:Ly2MKnK4なにここ処刑会場?
0718デフォルトの名無しさん
2016/02/12(金) 17:06:33.50ID:A6+sqZJrPostMessage やら SendMessage やらの話は↓こちらでどうぞ。
Win32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/
スワップファイルの挙動の話は↓こちらでどうぞ。
Windows
http://peace.2ch.net/win/
0719デフォルトの名無しさん
2016/02/12(金) 17:06:44.62ID:hlhHAQgj> 言いがかりつける前によく読みたまえ。
ああ1プロセスの話をしてるのか
そりゃすまん
>>713
トラブルの元って言うだけだろ
それを理解してやるなら問題ないんじゃね?
自分はやろうとは思わないけど
0720デフォルトの名無しさん
2016/02/12(金) 17:32:48.50ID:dKyYxY1Q日本語の解説なのに読めないの?
そのページの意味わかる?
哀れ過ぎる。
0721デフォルトの名無しさん
2016/02/12(金) 17:36:57.96ID:dKyYxY1Qベンチマークも無しにそう言う設定マニュアル作成できるってのが信じられんわ
インハウスでベンチマーク取ってて特定の運用形態下での設定ならありかも知れんが
定石って言うなら公開されてる根拠出すべきだね
ID:Ly2MKnK4
0722デフォルトの名無しさん
2016/02/12(金) 17:51:04.63ID:Ly2MKnK4まずこの記事な、主となるベンチをプロセス作成直後に実行してて
挙句にバックグラウンドアプリのページアウト後でも十分スコアが出る、
専有型のベンチしか使ってない
つまり、あからさまにページインアウトによるパフォーマンス低下を避けた方法でスコアを出し、
ページファイル無しと変わらないと言ってるので、参考にならない
正直こんなあからさまな酷い記事よく書けると思うよ
これ読んで技術者気取っちゃうお前さんは自業自得だけど
0723デフォルトの名無しさん
2016/02/12(金) 18:13:44.60ID:dKyYxY1Q舞台裏が見えてきたわ
・素人ブロガーのヨタ記事を鵜呑みにしてページファイルをオフにしていた
・だからnew/mallocで失敗する
・メモリが取れない状態で描画要求がくる。
・メッセージループのdefwndprocを介して呼び出されるgdiモジュールがメモリ取れなくなる
・メッセージループが回らなくなる、あるいは再描画要求が繰り返される
・メッセージキューがあふれる
・PostMessageが失敗する
ID:HGC0xuFLはここから、
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
という、おバカな結論に、至ってしまった。
C++のランタイムメモリアロケーターはOSから確保した分を使い切ってからエラーになるので、
メッセージキューがあふれる方が先だったのだろう
いやー、笑わせてくれたなあ
あっ、処刑プログラムの発動は引き続き待ってるから 爆笑
0724デフォルトの名無しさん
2016/02/12(金) 18:15:44.63ID:dKyYxY1Q定石っての根拠になる公開記事は?
0725デフォルトの名無しさん
2016/02/12(金) 18:20:33.55ID:dKyYxY1Q非アクティブなアプリに対する有効性は認めた上で読むんだから問題無いね
で、定石って言ってる根拠は?
0726デフォルトの名無しさん
2016/02/12(金) 18:28:01.77ID:hlhHAQgj> ベンチマークも無しにそう言う設定マニュアル作成できるってのが信じられんわ
設定マニュアル?
なんの言いがかりですか? w
俺はそうやってる奴がいるって書いてるだけなんだから、ちょっと落ち着け
そもそも
> 非アクティブで放置してたアプリをアクティブにするスピードだけは向上した
って言う効果はあるんだろ?
それをもっさり解消って言ってるだけだと思うし、何を必死に突っかかってるのかよくわからん
あと >>723 みたいな根拠のない憶測でレスするのは止めた方がいいし、ページングファイルを食い潰さなくても new/malloc が失敗することはある
0727デフォルトの名無しさん
2016/02/12(金) 18:28:21.04ID:dKyYxY1Qこれがページファイルオフでの性能向上とどう関係してるのか説明しろや
0728デフォルトの名無しさん
2016/02/12(金) 19:01:34.69ID:Ly2MKnK4定石かどうかを証明するのは難しいな
権威的なものでいいなら軽く検索しただけでも
http://www.dell.com/downloads/global/products/pedge/en/poweredge-m610-power-competitive-whitpaper.pdf
それとパフォーマンス低下についてはMS公式にもある
https://support.microsoft.com/en-us/kb/918483
ちょっと検証コード書いてみるか
0729デフォルトの名無しさん
2016/02/12(金) 19:22:04.81ID:dKyYxY1Qサーバーのページファイルオフなんてありえねー
メモリ枯渇で即落ちしてもオケなんて想像もつかんわ
これが定石ってどんな集団だよ
0730デフォルトの名無しさん
2016/02/12(金) 19:58:57.38ID:NIVdBMY9↓
メモリ不足ですね増設しましょう
↓
ボッタクリ価格でメモリ増設まいどあり
0731デフォルトの名無しさん
2016/02/12(金) 20:06:37.11ID:W1VJFYp+仕様上あり得るとされるものを現在の実装で本当に起こるのか再現させてみるなど時間の無駄
起こりうる前提で物事を考えなければならない
まあ論理的思考が出来ない馬鹿にはちょっと難しかったな
0732デフォルトの名無しさん
2016/02/12(金) 20:20:51.50ID:Ly2MKnK4そらメモリ足らない環境でやったらただの馬鹿だろがw
足りてる状況で考えろよw
0733デフォルトの名無しさん
2016/02/12(金) 20:24:11.68ID:hlhHAQgj> 起こりうる前提で物事を考えなければならない
その話と
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
の状況を書く話は関件ないよね
妄想じゃないなら、エラーコードや対応策を書けるでしょ
本人忘れててもソースコードあれば思い出すのはわけないだろうし
って論理的思考が出来れば容易に理解できると思うけど w
0734デフォルトの名無しさん
2016/02/12(金) 20:25:50.67ID:dKyYxY1Q逃亡態勢にはいったようだが、
「起こりうる」ではなく、メモリ枯渇の前兆としてPostMessageがFAILするという、
ドキュメントに書かれていない主張をしてるんだから、
取り下げるか、立証する義務があるんだよ。わかるかな、中学生。
0735デフォルトの名無しさん
2016/02/12(金) 20:32:26.84ID:ux6Bc/zl0736デフォルトの名無しさん
2016/02/12(金) 20:34:25.94ID:isgeeUAQスレタイもテンプレも読めないカスはすっこんでろや
0737デフォルトの名無しさん
2016/02/12(金) 20:46:57.18ID:bmljtWY70738デフォルトの名無しさん
2016/02/12(金) 21:03:53.69ID:SFFFzIuJ0739デフォルトの名無しさん
2016/02/12(金) 21:11:03.24ID:HGC0xuFLはあ?お前やっぱりバカの極致だな
リファレンスのどこに低メモリ化でPostMessageが失敗することはないと書かれてるんだよ
失敗した時はERROR_NOT_ENOUGH_QUOTAになるって書いてるだけだぞ
QUOTAの意味分かるか?
あと、お前のコードクレクレに付き合う気はないからw
そんな暇人じゃないんでね
たとえちょっとやそっとのテストで低メモリ下でPostMessageが失敗しなくても
何の証明にもならないということが分からねーんだろうなこの使えないバカは
というか何で『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
という単純な見解にここまで粘着してケチ付けるのかね?www
0740デフォルトの名無しさん
2016/02/12(金) 21:15:11.22ID:HGC0xuFL>while (PostMessage(hWnd, WM_NULL, 0, 0));
とかやって「証明終了!」とかいうバカの相手するだけ無駄だわ
0741デフォルトの名無しさん
2016/02/12(金) 21:18:19.41ID:PeChAo5O0742デフォルトの名無しさん
2016/02/12(金) 21:21:30.22ID:HGC0xuFL本当に嘘なら嬉しいんだけどなwww
0743デフォルトの名無しさん
2016/02/12(金) 21:22:41.29ID:HGC0xuFL0744デフォルトの名無しさん
2016/02/12(金) 21:27:07.73ID:dKyYxY1Qお前の主張は
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
だからね。
「メモリアロケーションに失敗する前」
ま、お笑い劇場の舞台裏は全部解明出来てるから逃げ出しても良いけどね。
0745デフォルトの名無しさん
2016/02/12(金) 21:54:52.61ID:PeChAo5O0746デフォルトの名無しさん
2016/02/12(金) 22:06:57.63ID:lbf6swjk0747デフォルトの名無しさん
2016/02/12(金) 22:15:29.87ID:dKyYxY1Qって、職場でドヤ顔してたんだろうな。
当時を憶えてる同僚とかいたらどうするんだ?
0748デフォルトの名無しさん
2016/02/12(金) 22:16:02.44ID:isgeeUAQ0749デフォルトの名無しさん
2016/02/12(金) 22:19:50.35ID:dKyYxY1Q早期に逃走しとけばよかったのに。
0750デフォルトの名無しさん
2016/02/12(金) 22:38:34.72ID:hlhHAQgj永遠に無理でしょ
0751デフォルトの名無しさん
2016/02/12(金) 22:38:45.21ID:ogWwf7PCPostMessageはC++だったんですね。そうとはきづかづごめんなさい
0752デフォルトの名無しさん
2016/02/12(金) 22:43:03.91ID:HGC0xuFL「PostMessageはメモリアロケーション失敗の前兆として使える」なんて俺は言ってもいないし
人の言ってることを曲解しては悦に入るバカどもの巣窟
0753デフォルトの名無しさん
2016/02/12(金) 22:48:37.57ID:HGC0xuFL生き残らななきゃいけないソフト書いたことがないのが丸わかりのやつが
何をほざこうが片腹痛いだけだからw
0754デフォルトの名無しさん
2016/02/12(金) 22:55:13.94ID:HGC0xuFL0755デフォルトの名無しさん
2016/02/12(金) 23:27:15.72ID:W1VJFYp+レファレンスを100回読み直せ
0756デフォルトの名無しさん
2016/02/12(金) 23:38:11.01ID:W1VJFYp+>>733
リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能
>>734
「メモリ不足でエラーにならないとは書いてない」と「メモリ不足エラーが有るとは書かれていない」は矛盾しないしどちらも間違ってはいない
ただ「メモリ不足エラーはあり得ない」というのは間違い
0757デフォルトの名無しさん
2016/02/12(金) 23:39:06.98ID:HGC0xuFLPostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る
そうしてるうちにメモリーリーク犯人のプロセスは死ぬから目的は達成できるというわけ
0758デフォルトの名無しさん
2016/02/13(土) 00:03:32.55ID:MUp0G3Pc抽象的過ぎ
当たり前なら何故具体例が一つもないのか?
被告の訴えを却下します
0759デフォルトの名無しさん
2016/02/13(土) 00:24:37.37ID:zKS/hYh5471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi
Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0760デフォルトの名無しさん
2016/02/13(土) 00:46:48.91ID:zKS/hYh50761デフォルトの名無しさん
2016/02/13(土) 00:50:14.82ID:rkbIirC9> リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能
え“っ、マジで言ってる?
>>471 には
> その辺に対応するのがコツ
って書いてあるんだが w
まあご自慢の「対応」が…
>>757
> PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
> そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る
では恥ずかしくて書けんわな w
結局 >>512 で終了だったんじゃん
0762デフォルトの名無しさん
2016/02/13(土) 00:55:31.18ID:CApp8RWm0763デフォルトの名無しさん
2016/02/13(土) 00:58:17.06ID:rkbIirC9>>509 で、
> PostMessageの戻り値を見たこともないゴミは黙ってろって
とか言ってたから、そこは
PostMessage の戻り値じゃなくて GetLastError だろ
って突っ込もうと思ったが、まさかのマジだったとは… w
ERROR_NOT_ENOUGH_QUOTA なんて見たこともなかったんだろうな
0764デフォルトの名無しさん
2016/02/13(土) 01:34:04.31ID:u45lvCeqこういう状況じゃGetLastErrorなんて蛇足なんだよこのクソバカ
0765デフォルトの名無しさん
2016/02/13(土) 01:49:46.40ID:u45lvCeqその結果をメインスレッドに伝えるためのPostMessage。ログを出力するための
ファイル操作とか極限的なリソース不足状態ではどこでどんなエラーが起ころうが
文句は言えない。俺の経験ではPostMessageが最初にエラーになったというだけだよ。
違うバージョンのOSでもそうなるかなんて知らないし、GetLastErrorなんてもっとどうでもいい。
0766デフォルトの名無しさん
2016/02/13(土) 01:57:26.09ID:KZpZDJLQ0767デフォルトの名無しさん
2016/02/13(土) 02:01:11.61ID:u45lvCeq何の解決にもならないね
0768デフォルトの名無しさん
2016/02/13(土) 02:12:00.43ID:u45lvCeqそういう状況で可能なのは自分が死なないように極力耐えること
バカが作った穀潰しソフトが動いている以上もうどうしようもない
そのソフトを安易にkillできないという苦しい状況だったし
でもそのうちそのバカソフトは自滅するから「このバカソフトがメモリを食いつぶして
他のプロセスまで巻き込んで自滅しました」って報告ができたというわけ
0769デフォルトの名無しさん
2016/02/13(土) 02:18:24.92ID:mOEZHanVそういうのはライブラリに任せておけばいい。
メモリ確保してる処理は把握してなるべく使うな。
ほとんどスタックで片つくんだから。
0770デフォルトの名無しさん
2016/02/13(土) 03:45:26.51ID:zKS/hYh5それはね、日本語版msdnには「エラーを取得するには関数を使います」しか書かれてないからだよ 大爆笑
0771デフォルトの名無しさん
2016/02/13(土) 03:50:36.67ID:zKS/hYh5無い知恵振り絞って辿りついたのがPostMessageで診断 大爆笑
哀れ過ぎる
0772デフォルトの名無しさん
2016/02/13(土) 03:52:23.57ID:zKS/hYh50773デフォルトの名無しさん
2016/02/13(土) 08:05:49.98ID:rkbIirC9それな〜
プロセス数の上限が読めないからいちいちメモリー確保してるみたいだし(⇒>>493)、余計な苦労を明後日の方法で解決してドヤってるだけやね
まあ、そもそもこの監視ソフトとやらが本当に必要だったかどうかも怪しいみたいだけど w
0774デフォルトの名無しさん
2016/02/13(土) 08:07:18.11ID:GG2kKfuP開発中のシステムからメモ帳のウィンドウハンドル(入力ウィンドウ)を取得し、
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
--------------
0775デフォルトの名無しさん
2016/02/13(土) 08:10:50.39ID:tl7vIPkr結局、「コツ」でもなんでもなかったと。
0776デフォルトの名無しさん
2016/02/13(土) 08:23:05.67ID:HsLEl+zUupはどうした?
win32apiすれにgo
0777デフォルトの名無しさん
2016/02/13(土) 08:25:44.61ID:GG2kKfuPもちろんupも入れてみたんですが、やはりダメでした。
何が原因なんですかね・・・原因がわかれば納得できるのでpost使おうと思うのですが
0778デフォルトの名無しさん
2016/02/13(土) 09:19:28.60ID:rkbIirC9取り合えず PostMessage の戻り値と戻値が 0 なら GetLastError の戻り値を確認することからかな
間違っても…
> PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
なんてタワケの言うこと信じちゃダメだぞ w
0779デフォルトの名無しさん
2016/02/13(土) 09:31:02.81ID:zKS/hYh5俺に言わせるとそれほど難しいことじゃない キリッ
> PostMessage使わなきゃいーじゃんwwww
それを外しちゃダメだよ ゴミカスが無い知恵振り絞って考え付いたと思い込んでる、メモリ不足対策のキモなんだから。
>>471
> Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
> いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
> その辺に対応するのがコツ
> 実務じゃ使いものにならないゴミクズが何をほざこうか俺の作った監視プログラムは目的を達成したからw
まぐれで動いたゴミクズを自慢するド素人 憐れ
http://codepad.org/CEp9Bp6L
PostMessageの戻り値見ても、メモリ不足対策にならないんだけど。 w
1816 3929 9999 unknown error
PostMessag=1 malloc=00000000 <==== PostMessage成功するけど、malloc出来ない
PostMessag=0 malloc=01EF0048 <==== PostMessage失敗なのに、malloc出来ちゃう
> 俺に言わせるとそれほど難しいことじゃない
> 俺に言わせるとそれほど難しいことじゃない
0780デフォルトの名無しさん
2016/02/13(土) 09:31:11.38ID:ZcBYdk8aWin32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/
0781デフォルトの名無しさん
2016/02/13(土) 10:18:33.52ID:e6sIQV8m0782デフォルトの名無しさん
2016/02/13(土) 10:27:59.74ID:e6sIQV8m0783デフォルトの名無しさん
2016/02/13(土) 10:57:04.37ID:u45lvCeq今朝ちょっと暇があったからWindows7 64bitで試してみたら簡単に再現したわ10分も掛からなかった
GetLastErrorの戻り値は1816(ERROR_NOT_ENOUGH_QUOTA )だ
0784デフォルトの名無しさん
2016/02/13(土) 11:34:57.57ID:MUp0G3Pc0785デフォルトの名無しさん
2016/02/13(土) 11:36:27.18ID:mOEZHanV0786デフォルトの名無しさん
2016/02/13(土) 12:03:30.93ID:u45lvCeqコードくれくれうざい
やり方は>>663に書いた
大事なのはメモリを真に使い果たす悪役プログラムを作ることだよ
>>627みたいなやり方じゃ全然話にならない
そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ
犠牲者の方はシンプルなやつでいい
0787デフォルトの名無しさん
2016/02/13(土) 12:10:30.02ID:Zu4nB+6U10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ
.
0788デフォルトの名無しさん
2016/02/13(土) 12:14:02.97ID:MUp0G3Pc当たり前であることと矛盾しますね
また複雑である場合他の部分の副作用である可能性は否定できません
証明義務のあるu45lvCeqに再度コードの提示を求めます
0789デフォルトの名無しさん
2016/02/13(土) 12:18:11.17ID:zKS/hYh5>>783
> GetLastErrorの戻り値は1816(ERROR_NOT_ENOUGH_QUOTA )だ
QUOTAの意味分かるか? 爆笑
>>786
> >>627みたいなやり方じゃ全然話にならない
プログラムがどうやって動いているか、原理を理解してないバカ。www
http://codepad.org/CEp9Bp6L
PostMessageの戻り値見ても、メモリ不足対策にならないんだけど。 w
1816 3929 9999 unknown error
PostMessag=1 malloc=00000000 <==== PostMessage成功するけど、malloc出来ない
PostMessag=0 malloc=01EF0048 <==== PostMessage失敗なのに、malloc出来ちゃう
俺に言わせるとそれほど難しいことじゃないんで、くれてやるよ。
0790デフォルトの名無しさん
2016/02/13(土) 12:26:08.81ID:zKS/hYh5俺に言わせるとそれほど難しいことじゃないんで、今回は特別に教えてやるよ。 W大爆笑
絶対に死んではいけないプログラムにウインドウ持たせるのは、絶望的にプログラミングセンスが無い。
お前、ホームレスに転職した方が良いぞ。
0791デフォルトの名無しさん
2016/02/13(土) 12:27:17.07ID:rkbIirC9> そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作
って
>>513
> 低能が作った穀潰しゴミソフト
の話だよね
もう病院に駆け込んだ方がいいレベル w
0792デフォルトの名無しさん
2016/02/13(土) 12:50:15.26ID:zKS/hYh5なんか、応用の聞かない「メモリ不足対策」だね。
>>627みたいな超簡単な悪役にも対応できないのか。
墓穴掘ってやがる。ゴミクズって本当にバカだな。
0793デフォルトの名無しさん
2016/02/13(土) 13:56:19.68ID:7PDbXjKY0794デフォルトの名無しさん
2016/02/13(土) 13:59:03.92ID:Th9NieDp0795デフォルトの名無しさん
2016/02/13(土) 14:52:35.59ID:e6sIQV8mハーブサッターはVisual C++がC99をサポートしない理由を訊かれて「しないからしない」的なアスペな回答をしている
Cにしかない機能以外は対応するが、それ以外はCはC++のサブセットとしてC++を使えということだ
0796デフォルトの名無しさん
2016/02/13(土) 15:12:53.44ID:GG2kKfuP>>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);
0797デフォルトの名無しさん
2016/02/13(土) 15:15:43.59ID:jEq/NF/M0798デフォルトの名無しさん
2016/02/13(土) 15:35:45.74ID:QD8KbUeSメモ帳立ち上げてkeybd_event()でやった方が早いぞ
0799デフォルトの名無しさん
2016/02/13(土) 16:05:47.92ID:GG2kKfuP>>798
keybd_eventやSendInputは最前面ウィンドウに対する操作になってしまうので、
使えないです。
※ウィンドウが最前面か否かに関わらず常に安定した操作を実現したいのです
0800デフォルトの名無しさん
2016/02/13(土) 17:09:11.77ID:MXADxP3M自分はあいぽんアプリ作りたくてXcode+Clang(とllvm gcc)使ってるよ
ここはVCの独自仕様を嫌うコメが結構出るし、VCばっかりということはないはず
自分も以前はWin+VCばっかりだったけど、Clangやgccに移植していかに自分のコードが
独自仕様に頼ってたか思い知らされた・・・
0801デフォルトの名無しさん
2016/02/13(土) 17:36:13.24ID:e6sIQV8mそもそもコンパイラーを使っていない
0802デフォルトの名無しさん
2016/02/13(土) 17:50:22.29ID:8c5F/b7w0803デフォルトの名無しさん
2016/02/13(土) 18:13:39.59ID:Th9NieDp0804デフォルトの名無しさん
2016/02/13(土) 18:18:04.37ID:UpZGp0t4のコード、g++4.9.3でコンパイルすると
main.o:main.cpp:(.rdata$.refptr._ZN4hogeILw65EE5valueE[.refptr._ZN4hogeILw65EE5valueE]+0x0): `hoge<(wchar_t)65>::value' に対する定義されていない参照です
とエラーが出ます。
109行目をコメントアウトするとコンパイル出来ます。何故ですか
0805デフォルトの名無しさん
2016/02/13(土) 18:33:19.74ID:mOEZHanVあっさーとで落ちてるからなんかチョンボしてる。かな?
0806デフォルトの名無しさん
2016/02/13(土) 18:40:12.59ID:jEq/NF/Mstatic 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
0807デフォルトの名無しさん
2016/02/13(土) 19:52:01.47ID:2d9oUeOe0808デフォルトの名無しさん
2016/02/13(土) 20:26:47.13ID:e6sIQV8mshallで要求されたことを満たしていないのでエラー等のメッセージを出す義務があるのではないだろうか
1.4 Implementation compliance p2
0809デフォルトの名無しさん
2016/02/13(土) 20:55:19.29ID:ISK/9ZCR0810デフォルトの名無しさん
2016/02/13(土) 22:00:43.12ID:5ubtGtDT0811デフォルトの名無しさん
2016/02/14(日) 00:02:32.46ID:M72BiSZl疑問があるなら率直に書きなさいな。
0812デフォルトの名無しさん
2016/02/14(日) 00:09:59.23ID:rASW1SI10813デフォルトの名無しさん
2016/02/14(日) 00:26:17.27ID:YtvhXGz30814デフォルトの名無しさん
2016/02/14(日) 00:35:43.88ID:qwowkzgX>>806に書いてある
>static const メンバ変数に初期化子をつけて宣言しても定義にはならない
のことだよ。
クラステンプレートの場合は、クラス内宣言が定義になるんじゃないの?
0815デフォルトの名無しさん
2016/02/14(日) 00:41:08.95ID:YtvhXGz3無理して回答する必要ないから
0816デフォルトの名無しさん
2016/02/14(日) 01:45:35.51ID:Ssn6bioAクラスとクラステンプレートで宣言と定義に大差は無い
template<typename T> struct a {
constexpr static int N = 0;
};
template<typename T> constexpr int a<T>::N;//アドレスを要求される場合必要
int main(){
f(&a<int>::N);
}
0817デフォルトの名無しさん
2016/02/14(日) 02:03:22.21ID:2H7lNMsF○:規格
0818デフォルトの名無しさん
2016/02/14(日) 02:17:54.69ID:Ssn6bioAだが規格よりドラフトN4567の3.2 One definition ruleの方が近い例が書かれている
0819デフォルトの名無しさん
2016/02/14(日) 05:43:49.28ID:trZrfj/6C++14でこうなった(規格引用)、C++11ではこうだった(規格引用)、
みたいに紹介してくれると余計に有難い。
広く普及してる開発環境が最新規格に追いついてるとは限らないしね。
0820デフォルトの名無しさん
2016/02/14(日) 07:43:32.58ID:Ssn6bioA規格は>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とコメントが書かれている
0821デフォルトの名無しさん
2016/02/14(日) 08:59:22.24ID:IJ2u9HkZ…ふぅ、また>>815の顔にかけてしまった
0822デフォルトの名無しさん
2016/02/14(日) 13:01:29.21ID:H3NWVMks0823デフォルトの名無しさん
2016/02/14(日) 13:20:05.11ID:+WF+5Yyl大昔は enum 使ってたし。
0824デフォルトの名無しさん
2016/02/14(日) 13:22:40.71ID:YtvhXGz3PostMessageでメモリ状況の診断するような素人が紛れ込むと混乱するからね。
0825デフォルトの名無しさん
2016/02/14(日) 13:30:57.56ID:jQtJnDcoPostMessageでメモリの使用状況調べるのは初耳だな
0826デフォルトの名無しさん
2016/02/14(日) 14:10:17.13ID:jkMZu/bi規格を読んだ他の人が指摘するだけ。何を心配してる?
>>815はわざわざ検証しやすいよう検索結果を示してるし、
N4567は誰でもダウンロードできるし、
メイヤー先生の本にも書いてあることだし。
0827デフォルトの名無しさん
2016/02/14(日) 17:53:52.82ID:M72BiSZlお疲れ様、プロの規格読みの人。
0828デフォルトの名無しさん
2016/02/14(日) 18:18:09.59ID:YtvhXGz3今週来てなかったのか? ド素人の>>471からの暴れっぷりを楽しんでくれ。
0829デフォルトの名無しさん
2016/02/14(日) 18:27:29.02ID:/+rigQ84PostMessageの挙動ってメモリアロケーションと無関係では?
だとしても、確認のためにPostMessageをうつのかな
0830デフォルトの名無しさん
2016/02/14(日) 18:40:15.29ID:KVV6N47s0831デフォルトの名無しさん
2016/02/14(日) 18:55:30.00ID:2GOq4jA1WIN32APIの仕様の話など、どうでもいいわ
0832デフォルトの名無しさん
2016/02/14(日) 19:02:17.52ID:bGJc4W0W本当に初歩的な質問なんですけど
C++のThreadはWindowsじゃ使えないのでしょうか、それともgcc4.8.1のほうが悪いのでしょうか
0833デフォルトの名無しさん
2016/02/14(日) 19:05:42.38ID:mwiD0ozsなんでメモリが極限状態でOSのAPIが失敗するような状況下でも生き残らないといけないような
究極のログ取りアプリを作らないといけない時に、PostMessageなんか使ったのか、だろうな
彼はなにかメインスレッドに結果を伝えるためにPostMessageを使ったらしいが
メモリ使用量調べてログファイルに書き出すだけの、メモリリークの証拠をつかむためだけの
使い捨てのアプリにサブスレッドなんかいるか?
適当なウエイトかけてループ回して、メモリ使用量取得して、ログファイルに書き出す
これだけだろ
多少何か工夫するにしてもPostMessageの出番は無いように思うが
極限状態でも生き残らなきゃならないなら、なおさらのこと、余計な仕組みは要らないだろう
ウィンドウも要らない
0834デフォルトの名無しさん
2016/02/14(日) 19:27:01.38ID:k6vnuBvmc++11のstd::threadならきちんと設定されたコンパイラ、ライブラリなら使えるはず。
gccのバージョンは知らんが、win上で使うなら、mingwだったりcygwinだったりの影響もあるしなんとも言えない。
そもそも使えないってどういう事?
0835デフォルトの名無しさん
2016/02/14(日) 19:42:39.56ID:YtvhXGz3http://stackoverflow.com/questions/21211980/mingw-error-thread-is-not-a-member-of-std
ここいらへんか?
0836デフォルトの名無しさん
2016/02/14(日) 20:05:21.87ID:YtvhXGz3ウインドウもってるだけじゃなくてメモリアローケーションも必須とか言ってるから、
そういうプログラムを作るだけの技量が無い素人が無理して作ったので根本的にダメ。
MFCで作ってたりするかも。爆笑
ところで、以前から気になってたので「"throw new" C++」で検索すると40万件もヒットする。
「throw newは禁じ手」って書かれてるページもあるだろうけど、アホなページが多すぎる。
例外投げる時に例外発生する可能性のある操作なんか、頭沸いてるとしか思えない。(しかもdeleteしないとリークするし)
さらに、C#から入ってきたアホはnewするのが当たり前とか、死ね。
476 :デフォルトの名無しさん:2016/02/09(火) 17:42:12.67 ID:GGDlYrLi
>>475
システム監視ソフトだからといってメモリ確保しなくていいわけじゃないです
そのソフトはどのプロセスがいつ起動してどれだけのメモリを使用していつ終了したかを
ログするものでしたがその過程で新たなメモリ確保はどうしても発生します
0837デフォルトの名無しさん
2016/02/14(日) 20:52:58.77ID:YKrrGoZLすまん>>828のから飛んで脊髄反射でレスしてしまった
無視してくれ
0838デフォルトの名無しさん
2016/02/14(日) 20:54:44.07ID:YKrrGoZL0839デフォルトの名無しさん
2016/02/14(日) 22:02:02.79ID:uelnhBqi自作クラスを作成しています。
以下コードの★★の箇所で以下のコンパイルエラーとなります。
-------------------
error C3867: 'AutoOperation::EnumChildProc': 関数呼び出しには引数リストがありません。
メンバーへのポインターを作成するために '&AutoOperation::EnumChildProc' を使用してください
-------------------
エラー表記通り「&AutoOperation::EnumChildProc」に変えると、
今度は以下のコンパイルエラーとなります。
-------------------
error C3374: delegate インスタンスを作成する場合以外に、'AutoOperation::EnumChildProc' のアドレスを指定できません
-------------------
やりたい事はクラス内でCALLBACK関数の呼び出し処理EnumChildWindowsを完結させたいのです。
解決策をご教授下さい。
0840デフォルトの名無しさん
2016/02/14(日) 22:27:21.41ID:r/RAVviGすみません、自己解決してしまったのですが、そもそもライブラリがないという状況でした
MinGWを4.9.2にしたらコンパイルが通りました!
0841デフォルトの名無しさん
2016/02/14(日) 22:31:54.01ID:jQtJnDcoAutoOperationはクラストか?クラスなら
AutoOperation::EnumChildProcがstaticでないとうまくいかんよ
0842デフォルトの名無しさん
2016/02/14(日) 23:52:18.37ID:uelnhBqiまたその逆の変換をする方法、を教えて下さい。
List<T>型をLPARAM型に変換する必要があり、
その後で、List<T>型をLPARAM型から再取得する必要があるのです。
0843デフォルトの名無しさん
2016/02/14(日) 23:59:09.56ID:KVV6N47sそれC++/CLIじゃね?↓こちらでどうぞ。
くだすれC++/CLI(初心者用)part2
http://peace.2ch.net/test/read.cgi/tech/1268613679/
スレ立てるまでもない質問はここで 142匹目
http://peace.2ch.net/test/read.cgi/tech/1454219795/
0844デフォルトの名無しさん
2016/02/15(月) 00:15:11.02ID:oAOjOrx0throw newがそんなに変か?
マイクロソフトのMFCとかDeleteする決まりでnew相当のことしてるし、
std::excetionが仮想デストラクター持ってる時点でnewは想定内だと思うが
0845デフォルトの名無しさん
2016/02/15(月) 01:03:22.65ID:2arjOQyX[[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;
}
0846デフォルトの名無しさん
2016/02/15(月) 01:18:37.66ID:t53MVuXe0847デフォルトの名無しさん
2016/02/15(月) 01:27:44.57ID:FDnCcdJi0848デフォルトの名無しさん
2016/02/15(月) 07:11:27.03ID:X0JRo1x/0849デフォルトの名無しさん
2016/02/15(月) 07:58:34.47ID:CWNdtN9u0850デフォルトの名無しさん
2016/02/15(月) 08:29:56.66ID:E84Q1jzs>>845も書いてるけど、スマポにいれるときに必要でしょ。
MFCがそうしてる理由は知らない。もう調べる気にもならない。
0851デフォルトの名無しさん
2016/02/15(月) 15:58:42.31ID:OrmzHinO0852デフォルトの名無しさん
2016/02/15(月) 19:21:41.46ID:/dhi15sf0853デフォルトの名無しさん
2016/02/15(月) 19:28:23.35ID:+a5jVKa7//----------
#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してないのに問題ないのか)も教えていただけると助かります
よろしくお願いします
0854デフォルトの名無しさん
2016/02/15(月) 19:40:37.00ID:CbTFphiX検出が困難だからじゃね?リンクする全ての翻訳単位を調べる必要がある
0855デフォルトの名無しさん
2016/02/15(月) 20:25:22.92ID:nJzI4k3D>>853みたいなコードを書いてみたが、なんのメリットもないどころか害しかなかったorz
0856デフォルトの名無しさん
2016/02/15(月) 20:39:29.70ID:/dhi15sfどっちもリークしてるよ,後者は検出をとちっているよ
0857デフォルトの名無しさん
2016/02/15(月) 20:42:06.75ID:515HeFhAint* i = new int;
は検出するけど
new int;
ってやると検出してくれないクソツールだったような
0858デフォルトの名無しさん
2016/02/15(月) 21:30:54.97ID:E84Q1jzsグローバル変数の寿命はプログラムの終了に等しいのでリークではない
0859デフォルトの名無しさん
2016/02/15(月) 21:45:37.09ID:g9kjW0Geint *i ;
の
iそのものはな。
0860デフォルトの名無しさん
2016/02/15(月) 21:58:25.68ID:cINU//5g0861デフォルトの名無しさん
2016/02/15(月) 21:59:58.72ID:Kxee8Tilそれな
めんどくさくなりそうだから黙っておいた
0862デフォルトの名無しさん
2016/02/15(月) 22:47:14.02ID:nJzI4k3D僕のドヤッを横取りしないでくれまいか
0863デフォルトの名無しさん
2016/02/15(月) 23:22:30.66ID:t1etBRNfグローバル変数のリークなんて誰も言ってないことでドヤ顔されても… w
0864デフォルトの名無しさん
2016/02/15(月) 23:47:29.60ID:sBsZfSdn「グローバル変数の寿命はプログラムの終了に等しいので(グローバル変数で参照されているオブジェクトの寿命もまたプログラムの終了に等しいので)リークではない」
という日本語だろうに
0865853
2016/02/16(火) 00:04:03.79ID:X2hmxT3sありがとうございました
0866デフォルトの名無しさん
2016/02/16(火) 00:12:13.15ID:yTUaUSx5素人がnewを使うとやはりロクなことがない
0867デフォルトの名無しさん
2016/02/16(火) 00:47:08.51ID:utvP1D7N>>858のリークの定義は片手落ちすぐる
0868デフォルトの名無しさん
2016/02/16(火) 06:42:53.10ID:8Pefi8290869デフォルトの名無しさん
2016/02/16(火) 08:09:37.14ID:5UqE7wWz0870デフォルトの名無しさん
2016/02/16(火) 09:22:32.06ID:WpzjUCIxヒープ領域とプログラムの終了に関係に対して典型的な勘違いをしている可能性がある
(>>853の一番目の例で「リークしている」と考えている可能性)
>>866 >>868
お前らはおそらく他のみんなより周回遅れだからもうレスしないほうがいい
0871デフォルトの名無しさん
2016/02/16(火) 13:01:17.95ID:55V2OvFfお前は周回遅れ以前に方向が明後日だからレスするなよ…
0872デフォルトの名無しさん
2016/02/16(火) 13:30:13.10ID:7QfacfPpJavaやC#から流れてきた人間にはC++のnewは到底扱えないものだと
いうことが繰り返し繰り返しはっきりしてきた
0873デフォルトの名無しさん
2016/02/16(火) 13:36:34.99ID:DcMkse9A繰り返し繰り返しはっきりしてきたかぁ
0874デフォルトの名無しさん
2016/02/16(火) 13:39:06.49ID:xyyoUOSC0875デフォルトの名無しさん
2016/02/16(火) 13:49:41.64ID:8Pefi829基本的にはプログラム内でnewしてアロケートしたメモリはdeleteしないとダメなんじゃないの?
それをメモリリークと呼ぶかどうかは別として
0876デフォルトの名無しさん
2016/02/16(火) 16:53:19.68ID:3V9H/1fhVCのメモリリーク検出ツールなら>>853の下のバージョンのコードのメモリリークを検出するよ
しかし、cppcheckは静的に解析してメモリリークを探すものだから限界があるのだろう
0877デフォルトの名無しさん
2016/02/16(火) 17:09:29.10ID:3V9H/1fhVCのメモリリーク検出ツールは、newしたものをdeleteし忘れていたら
プログラム終了時に教えてくれる単純なものだが
これとは違ったポリシーのツールなのかもしれない
例えば、どこからも参照されていないメモリブロックが有ったら、メモリリークとする、という考え方なら
グローバル変数に突っ込んである限りは、プログラムが生きている間はずっと参照が残るので
deleteしなくてもメモリリーク扱いにならない、とかかもしれない
良くは知らんが
0878デフォルトの名無しさん
2016/02/16(火) 23:59:38.31ID:RidGc7qJ0879デフォルトの名無しさん
2016/02/17(水) 00:49:29.84ID:BPMYjlVfこれやってくれない処理系って例えば何ですかね?
組み込みのOSとかだとあるんかな
0880デフォルトの名無しさん
2016/02/17(水) 01:03:08.75ID:N1klTUFY早い話そのツールはリーク検出については使いものにならないということ
0881デフォルトの名無しさん
2016/02/17(水) 07:43:11.29ID:d8kqwnnSA a;
int * p;
Aのデストラクタが呼ばれたときはpの寿命尽きてるだろう
0882デフォルトの名無しさん
2016/02/17(水) 09:50:12.84ID:STxbdzYGos(ランタイム)が仕事しないかもよ
0883デフォルトの名無しさん
2016/02/17(水) 10:12:54.63ID:UG2kvZqbpの寿命が尽きたあとでpが指していたヒープ領域が回収されていなければ、その時点でメモリリーク。
そのあと回収されるかどうかは別の話。
0884デフォルトの名無しさん
2016/02/17(水) 20:09:44.69ID:o4vOr9JWプログラム終了時にプロセスで使っていたメモリを開放しない派の人たちがいるでしょ
OSが開放するからって理由でさ
LinuxはヘボOSじゃないからプロセス終了時に自動でメモリを開放するから余計なことはしないっていうね
そういう人たちからしたら
int *global = new int;
でプロセス終了時にdeleteしてないのをメモリリークで検出されたら困るわけで
そういう人たちの圧力に屈して、グローバル変数が参照しているメモリブロックはメモリリーク扱いにしてないんじゃね?
0885デフォルトの名無しさん
2016/02/17(水) 20:13:44.87ID:o4UHPyEXもう、やめよう
0886デフォルトの名無しさん
2016/02/17(水) 21:13:10.77ID:sobQnjjW異なる翻訳単位に属する静的オブジェクトが依存関係を有するケースを見たことが無いのであろうか…
その場合、起動時の初期化順がA→B→Cなら開放順はC→B→Aでなければコケて例外を吐きかねないが
OS(と処理系の静的オブジェクト開放ランタイム)はそんなことお構いなしに適当な順序で開放してくれる
なお、異なる翻訳単位に属する静的オブジェクトに依存関係を持たせることは、
プロセス内の実行環境全体に低水準レイヤーのAPIを公開するみたいな階層設計なことがあり一概に糞とは言えない
0887デフォルトの名無しさん
2016/02/17(水) 21:13:29.77ID:BJJMKH5P使い物にならないのはお前だろwww
マジレスするとOSが纏めて解放してくれる環境で自分で一つ一つ解放する方がバカ
C99の_ExitかC++11のstd::quick_exitを知らんのか
0888デフォルトの名無しさん
2016/02/17(水) 21:15:19.69ID:sobQnjjW開放順の話にしてみた
0889デフォルトの名無しさん
2016/02/17(水) 21:19:53.84ID:g2jiUPfD0890デフォルトの名無しさん
2016/02/17(水) 21:22:14.50ID:ul+wSSfxアロケータさんが牛耳ってるところにメモリくれって言いに行ってないって言われたらそのアプリは終了だから。
メモリは解放しましょう。
0891デフォルトの名無しさん
2016/02/17(水) 21:35:47.24ID:e1xOPzhrそう言ったんです
不毛ですやん?
0892デフォルトの名無しさん
2016/02/17(水) 21:37:55.44ID:BJJMKH5P0893デフォルトの名無しさん
2016/02/17(水) 21:39:05.85ID:e1xOPzhrアンタのレスは良いよ
でもさ、きっとそれも無駄に終わる
もう毎度毎度のクソ展開は始まっている
0894デフォルトの名無しさん
2016/02/17(水) 22:48:07.25ID:N1klTUFY0895デフォルトの名無しさん
2016/02/17(水) 22:49:54.80ID:/p51h0GV全部解放すりゃいいだけなのになんでわざわざ手間かかる方を選ぶのか
0896デフォルトの名無しさん
2016/02/17(水) 22:57:23.22ID:N1klTUFY共同作業が全くない環境ならいいかと思うかも知れんが本当にアカンリークが分からなくなるだろ
0897デフォルトの名無しさん
2016/02/17(水) 23:33:08.75ID:nBw88SJtリリース版は _Exit
0898デフォルトの名無しさん
2016/02/17(水) 23:58:23.11ID:BpXyDkaJこの場合、初期化子は定数式でなければならない。staticデータメンバー自体も、定数式になる。
初期化子を書かない場合は、通常通り、クラス定義の外、同じ名前空間スコープ内で、定義を書かなければならない。
この場合は、定数式にはならない。
0899デフォルトの名無しさん
2016/02/18(木) 00:33:29.72ID:lQH/V+Cq解放処理にもコストがかかるから
gnuのcpが終了時にハッシュテーブル全て丁寧に破棄してて数億件のファイルコピーをすると終了処理にも膨大な時間がかかってたから、
解放しないように修正されたのは有名な話だろ
>>896
だからまともなメモリリーク検出ツールであるvalgrindは >>853 の例をメモリリークとしないんだよ。
(オプション入れると報告はする)
それをメモリリークとして報告するようなツールがもしあるなら使い物にならないクソだから今すぐ捨てろ。
0900デフォルトの名無しさん
2016/02/18(木) 00:51:59.53ID:8+Q+0B6Cさあそのcpの例なんて知らねーよ
メモリを解放するのがバカだったのかテーブルの持ち方がバカだったのか分かんねーな
そんな特殊例を無闇に一般化して、だから丁寧にメモリを解放する奴はバカだとか言われてもね
valgrindとやらで>>853をリークとするオプションがあるなら何故それを教えてやらない?
そのオプションは特殊な場合じゃない限り入れたほうがいいからw
0901デフォルトの名無しさん
2016/02/18(木) 01:04:13.35ID:lQH/V+Cq救いようがないな
0902デフォルトの名無しさん
2016/02/18(木) 01:14:05.63ID:8+Q+0B6Cそれで>>853は解決だから
0903デフォルトの名無しさん
2016/02/18(木) 01:30:26.74ID:lQH/V+Cqそのオプションについて教えてほしいと本人に頼まれてるわけじゃないしな。本人だとしたらなおさら教える気しないけど
0904デフォルトの名無しさん
2016/02/18(木) 01:36:35.06ID:8+Q+0B6C0905デフォルトの名無しさん
2016/02/18(木) 04:59:50.13ID:wtekQPk7迷路しておちつけ。
0906デフォルトの名無しさん
2016/02/18(木) 05:28:07.86ID:R4UuwZL3>>899みたいなアホがC++やってるからC++は馬鹿専用なので捨てるべき言語になるな
0907デフォルトの名無しさん
2016/02/18(木) 05:34:41.02ID:wtekQPk7これくらい以上の迷路作るときはヒープ必須なんやで。
これくらいのヒープをぽいぽいしてたら長期運用なんか無理やで。
0908デフォルトの名無しさん
2016/02/18(木) 06:01:16.63ID:cxWjsl/x出来ないことがさも普遍的であるかのように語られても
0909デフォルトの名無しさん
2016/02/18(木) 06:48:52.39ID:wtekQPk70910デフォルトの名無しさん
2016/02/18(木) 07:23:38.84ID:wtekQPk7記憶領域が足りなくて馬鹿になる。レガシーきっていいかは本人にはわからないので貯め込みジバーク。
0911デフォルトの名無しさん
2016/02/18(木) 07:32:21.02ID:QAq70uC+0912デフォルトの名無しさん
2016/02/18(木) 07:33:19.43ID:lQH/V+Cqの言ったとおりになったな。
ちなみにvalgrindのオプションは実行結果を読んだら2回目にたどり着く
0913デフォルトの名無しさん
2016/02/18(木) 07:44:35.15ID:wtekQPk7すげー。よく続きからかけるな。
俺の>>905はコーディング4時間だぞ。前に一回作ったことあるからそれも踏まえてね。
最後に燃やしてるのが悲しみを誘う。昇華されたんですな。
0914デフォルトの名無しさん
2016/02/18(木) 08:05:37.08ID:8+Q+0B6C「2回目にたどり着く」www
とっととそれをここに書きやがれ
でなけりゃこのスレにはもう二度と書き込むな
ここはお前が勿体ぶって物知り顔するスレじゃないんだぞ
>>853をデフォルトでリークとしないクソツールなんてインストールする気にもならないが
0915デフォルトの名無しさん
2016/02/18(木) 08:09:31.23ID:8+Q+0B6Cリファレンスくらいは確認してやるよ
0916デフォルトの名無しさん
2016/02/18(木) 08:19:15.91ID:lQH/V+Cq0917デフォルトの名無しさん
2016/02/18(木) 10:12:51.26ID:t7yUNGxd間違いを認めず尊大な態度で開き直るってパターンが一緒
0918デフォルトの名無しさん
2016/02/18(木) 12:26:56.51ID:cxWjsl/x大丈夫だ。デフォルトで実行するとフルチェックの指定方法が表示されるからツールとして問題無い
0919デフォルトの名無しさん
2016/02/18(木) 12:40:57.57ID:dlsHUuTCたまにお世話になってます
0920デフォルトの名無しさん
2016/02/18(木) 22:25:43.19ID:cxWjsl/x>valgrindは >>853 の例をメモリリークとしないんだよ
valgrindはリークをdefinite,indirect,possible,reachableに分類分けしていて
>>853はreachableのリークとして判定される訳だが
どうして嘘をつくのか
0921デフォルトの名無しさん
2016/02/18(木) 23:36:06.21ID:cxWjsl/x>staticデータメンバーが、constなリテラル型の場合、クラス定義内の宣言に、初期化子を書くことができる
んなこたーない
0922デフォルトの名無しさん
2016/02/18(木) 23:39:06.37ID:lQH/V+Cqせやね
正確にはメモリエラーにしないだったね。
ごめんなさいね。
0923デフォルトの名無しさん
2016/02/18(木) 23:40:13.29ID:jiQGl0+C「staticデータメンバーが、constなリテラル型の場合」
をこのページで検索してみては?
http://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml#class.static.data
0924デフォルトの名無しさん
2016/02/18(木) 23:48:43.86ID:cxWjsl/x江添だって時々間違えることはある
0925デフォルトの名無しさん
2016/02/18(木) 23:58:46.71ID:X4zyXl/p有名人なのか?
0926デフォルトの名無しさん
2016/02/19(金) 00:42:06.54ID:hdqL8A7vしかしgccでもclangでもvc++でもできるのは事実
0927デフォルトの名無しさん
2016/02/19(金) 00:57:16.68ID:qtkJJZHlhttp://ideone.com/Bdo8QL
Visual C++:エラー
G++:エラー
clang:エラー
0928デフォルトの名無しさん
2016/02/19(金) 01:03:47.07ID:yQQGU+clはい
http://ideone.com/NSy2jj
0929デフォルトの名無しさん
2016/02/19(金) 01:06:02.63ID:hdqL8A7vああごめん、俺が言ってるのは整数型だった。
0930デフォルトの名無しさん
2016/02/19(金) 01:09:43.25ID:yQQGU+clすまんミスってた。
0931デフォルトの名無しさん
2016/02/19(金) 01:47:17.70ID:i395RlVRID:qtkJJZHlのC++は名前にliteralが含まれればそれはリテラルになる
0932デフォルトの名無しさん
2016/02/19(金) 04:00:06.01ID:cPukLG4BID:qtkJJZHlが正しいんじゃないの?
0933デフォルトの名無しさん
2016/02/19(金) 04:03:39.73ID:cPukLG4B0934デフォルトの名無しさん
2016/02/19(金) 10:19:45.75ID:P6v/Cgbl誤 リテラル型
正 整数型・列挙型
クラスのstaticデータメンバーがリテラル型の場合は
(constではなく)constexprのときに初期化子が書ける(この場合正確には『初期化子を書かなければならない』)
0935デフォルトの名無しさん
2016/02/19(金) 12:51:22.58ID:cPukLG4B今まで壮絶に勘違いしていた
0936デフォルトの名無しさん
2016/02/19(金) 12:54:01.88ID:/AvoFovE0937デフォルトの名無しさん
2016/02/19(金) 20:04:26.07ID:eREs2hdb0938デフォルトの名無しさん
2016/02/19(金) 22:24:52.27ID:iVAswwzAconst volatile boolはconstな整数型ですが
クラス定義で初期化子が書けないのは何故ですか
0939デフォルトの名無しさん
2016/02/20(土) 01:58:57.86ID:+KUF2f1Tいやいやかなりマジで
0940デフォルトの名無しさん
2016/02/20(土) 04:44:38.86ID:WMw6sfmvやめようよPostMessageしてた人にPostMessageするの
0941デフォルトの名無しさん
2016/02/20(土) 04:50:30.62ID:fyeNp01h彼らは歴史をなぞるだけのトレーサーだったりするのかもしれない。
0942デフォルトの名無しさん
2016/02/20(土) 05:49:25.50ID:uiB0F9x6よっぽど暇なんだろうな
>while (PostMessage(hWnd, WM_NULL, 0, 0));
とかやって「証明終了!」とかいうバカだから暇でしょうがないんだろうなあ
0943デフォルトの名無しさん
2016/02/20(土) 06:02:10.07ID:fyeNp01h0944デフォルトの名無しさん
2016/02/20(土) 07:18:35.18ID:0KWzs3FY0945デフォルトの名無しさん
2016/02/20(土) 09:12:00.07ID:WMw6sfmv0946デフォルトの名無しさん
2016/02/20(土) 12:03:23.44ID:KnZWdrIJクソツールと否定されて相当悔しかったらしい
あ、PostMessageの時もそうだったかw
0947デフォルトの名無しさん
2016/02/20(土) 16:35:56.90ID:WX8IzsC40948デフォルトの名無しさん
2016/02/20(土) 17:50:05.19ID:7FQ5kWTX各コマごとのピクセル情報はすでにあるものとして、そのピクセル情報からその場面がどれくらいヒートしてるか計るアルゴリズムについて
アイデアがあれば教えて頂けませんでしょうか。
今はモザイクがかかってる箇所に対する反復運動の激しさから判定しようと思ってるのですが
それだけでは正確な盛り上がりっぷりがわからないのかなと思っています
0949デフォルトの名無しさん
2016/02/20(土) 17:59:07.80ID:jIhi6tPT0950デフォルトの名無しさん
2016/02/20(土) 21:02:56.26ID:frKGVU8o0951デフォルトの名無しさん
2016/02/20(土) 21:52:40.73ID:owoJYL1y喘ぎ声を必死におさえてる表情に興奮するオレみたいな奴もいるからそれはダメ
0952デフォルトの名無しさん
2016/02/20(土) 22:49:16.33ID:T3VT//dk被験者100人くらいに膨張率センサつけてAV見放題で数ヵ月かければDLに必要な学習データも集まるかもよ。
0953デフォルトの名無しさん
2016/02/20(土) 22:58:04.49ID:cJNMkscdそれ作ってなにに使うとよ?
0954デフォルトの名無しさん
2016/02/20(土) 23:08:54.38ID:7FQ5kWTX女喘ぎ声から男の攻めっぷりが判定できて、男喘ぎ声から攻められっぷりが判定できるかも
>>953
見てる動画の雰囲気に合わせてUSBオナホを動かすソフト作ってます
0955デフォルトの名無しさん
2016/02/20(土) 23:17:06.05ID:5/VRxrKY0956デフォルトの名無しさん
2016/02/20(土) 23:45:05.67ID:7FQ5kWTX使ってる人間に合わせたシステムだとまるで意味が無いのです
あくまで「自分の意思に関係なく動く機械によって快感を得る」というのがUSBオナホの基本でして・・・
0957デフォルトの名無しさん
2016/02/21(日) 00:03:45.26ID:vvUk+ASgからみ→くんに→ふぇら→挿入みたいな
場面の切り替わりをうまく検出してシーンの割り当てるのがいい気がする
0958デフォルトの名無しさん
2016/02/21(日) 00:06:32.35ID:Xn8BbX8n0959デフォルトの名無しさん
2016/02/21(日) 00:08:25.81ID:mZ9I4pVL0960デフォルトの名無しさん
2016/02/21(日) 00:09:05.15ID:Xn8BbX8nこれに>>958もプラスすると、意表を突かれた制御不可能な感じになって楽しいのでは?
0961デフォルトの名無しさん
2016/02/21(日) 00:14:22.54ID:xPHbwGFIttp://peace.2ch.net/test/read.cgi/tech/1439302488/
0962デフォルトの名無しさん
2016/02/21(日) 00:29:39.88ID:S0uLAIyq胸があつくなるわ
使ったことないけど
0963デフォルトの名無しさん
2016/02/21(日) 02:15:25.64ID:UzPMPT/jautoを知ったのはつい最近です。
いつ頃できたものなのですか。
0964デフォルトの名無しさん
2016/02/21(日) 02:18:59.38ID:BYiGM6laC++は同じキーワードに様々な機能を定義するUNKO言語なので
0965デフォルトの名無しさん
2016/02/21(日) 02:34:57.21ID:BYiGM6laauto 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年
0966デフォルトの名無しさん
2016/02/21(日) 06:47:26.21ID:UzPMPT/j2011のようです。
納得しました。
0967デフォルトの名無しさん
2016/02/21(日) 06:47:59.04ID:Vu+T+AQR貴様が情弱なだけのこと
0968デフォルトの名無しさん
2016/02/21(日) 06:51:27.85ID:Vu+T+AQR0969デフォルトの名無しさん
2016/02/21(日) 07:06:48.69ID:6FoMFdKR0970デフォルトの名無しさん
2016/02/21(日) 09:03:30.90ID:UzPMPT/j色んな人がいるようで面白くはありますが。
0971デフォルトの名無しさん
2016/02/21(日) 09:36:47.03ID:UzPMPT/j0972デフォルトの名無しさん
2016/02/21(日) 09:51:17.50ID:etYdR+rTここで聞くのは効率悪いし、自分で今どきのC++をリハビリ学習した方がいいよ。
autoなんてたいしたことないけど、理解に時間がかかるものはいろいろあるから。
0973デフォルトの名無しさん
2016/02/21(日) 10:16:36.25ID:UzPMPT/j今のとこSTLも浅く使えれば十分ですし、CLIとかはめんどくさいし、Boostは難しそうだしで、今から何勉強するのかが難しいんですよね。
やりたいこと何やるにしても環境依存のことばかりです。
0974デフォルトの名無しさん
2016/02/21(日) 10:21:10.84ID:toLQNscP俺に言わせるとそれほど難しいことじゃない
Windowsの場合、盛り上がり場面に入る前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0975デフォルトの名無しさん
2016/02/21(日) 10:51:44.78ID:xPHbwGFIそれな
大事だよな
0976デフォルトの名無しさん
2016/02/21(日) 11:17:52.46ID:VCiscas10977デフォルトの名無しさん
2016/02/21(日) 11:47:49.10ID:TK0DoK1H0978デフォルトの名無しさん
2016/02/21(日) 11:51:02.67ID:w4t8RSml0979デフォルトの名無しさん
2016/02/21(日) 12:05:29.00ID:UzPMPT/j//#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"だけで済むとかでないの?
二重に定義されたりもないし。
0980デフォルトの名無しさん
2016/02/21(日) 12:30:13.12ID:BYiGM6la0981デフォルトの名無しさん
2016/02/21(日) 12:51:33.19ID:m+BXwdHbC++どころかC言語の理解も怪しい
初心者スレに行きなさい
0982デフォルトの名無しさん
2016/02/21(日) 13:26:23.63ID:UzPMPT/jextern c++
あたりで検索したらすぐわかるよね?
俺の夢は実現しない
そういうことなのだよ
0983デフォルトの名無しさん
2016/02/21(日) 13:38:31.92ID:Xl+njwgfこれが正しい
盛り上がり場面に入るとインスタンスがクイックソートされて参照カウントも静的スコープされるから
結果的にハンガリアン記法のフロントエンドみたいなランタイムライブラリで判定できる
0984デフォルトの名無しさん
2016/02/21(日) 13:45:05.05ID:yp1la/Pcいやー、ハンドルみたいな使い方を規定していて、
自分は外部関数で値を変更したいんですけど、ユーザーには触ってほしくない。
という、わがままな欲求です。
そのうちUnified Call Syntaxが入ったら、いろいろやろうと思ってるところです。
これくらい以上の迷路作るときはヒープ必須なんやで。
これくらいのヒープをぽいぽいしてたら長期運用なんか無理やで。
0985デフォルトの名無しさん
2016/02/21(日) 13:48:22.46ID:hql2OPnWイベントログから対象データをピックアップしてヒューリスティックアルゴリズムによりトランザクション制御を解除することによってstatic領域を確保できる
0986デフォルトの名無しさん
2016/02/21(日) 14:43:51.25ID:BYiGM6laむしろ>>979こそexternの正しい使い方なのだが何を言っているのか
0987デフォルトの名無しさん
2016/02/21(日) 15:14:19.72ID:Z2I+oPAiextern class myhouse;
extern struct mywifes;
クラスや構造体の名前の事前宣言っていうのかな、
ではexternを書かないって話じゃないかな。
エラー出ませんか?
あと mywifes ってC++の文法と別に色々気になるんだけど。
0988デフォルトの名無しさん
2016/02/21(日) 15:19:46.90ID:m+BXwdHbまさかそんな初心者以下の馬鹿げたレスをされるとは思わなんだ
定義も無しにexternされた構造体型、クラス型変数をどう使うって?
レスを読んでなかったのか?はたまた不完全型を参照やポインタのみとして使用し、
ただコンテキストとして使用するなど世迷い言でも言う気か?
どういう言い訳が聞けるか見ものだな
0989デフォルトの名無しさん
2016/02/21(日) 15:57:23.17ID:Xl+njwgf0990デフォルトの名無しさん
2016/02/21(日) 16:12:50.14ID:OjYyYeGYmywiveだろうがアホ
が正解
0991デフォルトの名無しさん
2016/02/21(日) 16:14:54.41ID:OjYyYeGYアホは俺だorz
0992デフォルトの名無しさん
2016/02/21(日) 16:18:47.42ID:toLQNscP本質はそこじゃ無い。
intはあってるし、不完全型という利用方法があるので、挙足取り失敗。
externは要らない子とか言ってたバカ?
0993デフォルトの名無しさん
2016/02/21(日) 16:21:36.17ID:hql2OPnW君は stdio.h の FILE 構造体のメンバを意識して使っているのかね?
0994デフォルトの名無しさん
2016/02/21(日) 16:26:45.95ID:xPHbwGFI省略したら外部シンボルになるから省略できる
クラス名や構造体名は単なる名前であってリンカが取り扱うシンボルではないから
externをつけるのは無意味
少なくともVCだと
extern class myhouse;
extern struct mywifes;
は警告の対象
0995デフォルトの名無しさん
2016/02/21(日) 16:30:04.99ID:toLQNscP0996デフォルトの名無しさん
2016/02/21(日) 16:30:44.01ID:BYiGM6laextern class myhouse;
を
extern class myhouse global_variable;
と読み間違えた
0997デフォルトの名無しさん
2016/02/21(日) 16:31:32.38ID:xPHbwGFI1. 木やリンクリストのノードを表すクラス or 構造体の定義(自分自身と同じ型へのポインタをメンバに持つ
2. ヘッダファイルに構造体定義を書かずにすます「絶縁」テクニック
ただ最近のコードチェッカは2の絶縁テクニックで警告を上げてちょーウザいから、個人的には2は廃れたテクニック
0998デフォルトの名無しさん
2016/02/21(日) 16:31:55.92ID:BYiGM6la正 class myhouse{}; extern class myhouse global_variable;と読み間違えた
0999デフォルトの名無しさん
2016/02/21(日) 16:33:04.40ID:89qQ0NtX1000デフォルトの名無しさん
2016/02/21(日) 16:34:23.39ID:xPHbwGFI10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。