トップページ⇒tech
1002コメント362KB

C++相談室 part122 [無断転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2016/01/23(土) 23:06:15.32ID:HdItgJjm
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前には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:HdItgJjm
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
0003デフォルトの名無しさん2016/01/23(土) 23:11:46.68ID:HdItgJjm
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0004デフォルトの名無しさん2016/01/23(土) 23:14:12.22ID:HdItgJjm
---- テンプレ ここまで ----
0005デフォルトの名無しさん2016/01/24(日) 02:28:04.57ID:0LR1dPfv
前スレ>>935でスマポ関連の質問をした者ですが、すみませんがもう一度質問させてください。
今の糞コードはこんな感じです。

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
どのタイミングでB,C1,C2,C3が作られるのかが分からないとコメントできない
最初に結合考えられてない状態で全部オブジェクトが作られてそのあとつながっていくパターンなのか、
それとも親が子を作るパターンしかありえないのかで話は変わる

あとクラスの階層って表現は基本的にクラスの派生・クラスの上位下位って意味で使われるから、そういう場合はノードの親子関係とかそういう言葉を使った方がいい
0007デフォルトの名無しさん2016/01/24(日) 11:39:36.09ID:LHp2Xjej
AやB、C1、C2、C3がどういう意味を持つのか分からんとアドバイスは難しいかな。
もしかしたら全て同じクラスで表現して、有向グラフとして構成するのが一番かも知れん。

> クラスの異層間および同層間の参照がある
ノード間に自明な階層構造があるなら、親への弱いポインタとノードの参照パラメタのタプルを持てばいいんじゃない?
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/siiwPN
ファミコン世代なのでbelongs toって言い回しが怖くて使えない…
0009デフォルトの名無しさん2016/01/24(日) 13:26:35.94ID:efwl3LYy
All your base are belong to us
0010デフォルトの名無しさん2016/01/24(日) 14:29:49.80ID:7wa58CB+
>>8
何で?
0011デフォルトの名無しさん2016/01/24(日) 16:17:33.38ID:6/siiwPN
>>10
All your base are belongs to us.
これ訳せる?
0012デフォルトの名無しさん2016/01/24(日) 16:30:11.35ID:7wa58CB+
>>11
そんな英語を書いちゃうのが怖いってこと?
それとも英語圏だと有名な言い回しか何かってこと?

ごめん、文法詰め込み教育受けた典型的な日本人なんで、訳せないす…
001352016/01/24(日) 16:51:59.34ID:0LR1dPfv
>>6
>最初に結合考えられてない状態で全部オブジェクトが作られてそのあとつながっていくパターンなのか、
最初は何も考えずそうしていました。つまり、全てのオブジェクトをshared_ptrで作っていました。
ただ、前スレの指摘からshared_ptrを意味もなく使うのは駄目だと悟ったので、
ノード間に自明な親子関係があることから、素直に「親が子を作る」ほうがいいかと思いました。

>>7
書き忘れましたが、全てのクラスはインデックスを表すメンバ int index を持っており
これに従ってvectorをソートしたいのでした。
こういう場合shared_ptrやweak_ptrを使うのは悪くないということでしょうか?
0014デフォルトの名無しさん2016/01/24(日) 18:26:26.83ID:LHp2Xjej
>>13
最終的に何をやりたいかにもよる。

全てのノードへのポインタをunordered_setで保持して、確保するときは必ずそのunordered_setにinsertし、ノード間は生のポインタを使う
なんて実装も可能で、場合によってはその方が実行速度が速い。

BはA以外からは所有されないのであれば、shared_ptrよりunique_ptrの方が意味的には適切。
0015デフォルトの名無しさん2016/01/24(日) 18:34:36.48ID:fkWZRTEw
>確保するときは必ずそのunordered_setにinsert

挿入が随分とマヌケなコードにならないか?
0016デフォルトの名無しさん2016/01/24(日) 18:36:18.10ID:fkWZRTEw
あ、間違えた失礼
0017デフォルトの名無しさん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
>>5
そのコードで何か具体的な問題が起こってるのでもなければそれでいいんじゃないの?
問題があるならそこをはっきりさせないと、どう変えようかなんて考えようが無いと思う。
効率を気にしてるだけなら実測して要件を満たすならそれでいいし。
名無しの誰かの主観を満足させたいわけじゃないんでしょ?
0019デフォルトの名無しさん2016/01/24(日) 19:33:35.42ID:fkWZRTEw
>>17
スマポをunordered_setに入れるものと勘違いして>>16で撤回した俺がアホだった
やはり初心者にはC++は難しかったようだ
http://ideone.com/NUiLph
0020デフォルトの名無しさん2016/01/24(日) 21:56:44.58ID:ssnQMLKn
>>12
有名な間違いだらけの英語
0021デフォルトの名無しさん2016/01/25(月) 08:20:39.98ID:8HrLEsp2
>>19
そのunordered_setのvalueは生ポインタじゃなくて最初からスマートポインタでよくない?
あとインデックスあるんだからunordered_map使ったほうがすっきりしそう。まあここは質問者のやりたいこと次第だしそもそも>>14のsetの流れで出てきたものなんだろうけど
0022デフォルトの名無しさん2016/01/25(月) 10:55:34.57ID:yh3tfuOH
void hage()
{
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はそれぞれどういう値になるでしょうか
002352016/01/25(月) 11:17:27.48ID:2nNO2C2F
>>18
問題は全くないです。
ただ、スマポを正しく使えてる自信がなかった中、前スレ>>956等を見てやばいと焦った次第です。

>>14
生ポインタ使うのは正直抵抗があるので今回は見送ります。
unique_ptrは仰る通り使うべきでした。
0024デフォルトの名無しさん2016/01/25(月) 11:21:09.85ID:aGf3VXDj
>>22
規格で保証がある範囲を考えれば全部不定になり得るところ。
何が知りたいのかわかんないけど、自分で試せば?
002552016/01/25(月) 11:52:15.00ID:2nNO2C2F
糞コードをこんな感じに修正しました。どなたか採点していただけますか?
http://ideone.com/KYia26
修正点は以下です。
・weak_ptrをshared_ptrや参照に置き換えた
・一番親のAはBのリストをshared_ptrからunique_ptrに置き換えた

書いてて思ったのですが、今回のような複数のオブジェクトから参照されるオブジェクトをソートする場合は
スマポあるいは生ポを使う以外方法がないんではないでしょうか?
0026デフォルトの名無しさん2016/01/25(月) 12:49:17.26ID:MTh5r7jR
>>22
構造体同士の代入は出来ても比較が出来ないのは、
アラインメントを合わせるためにパディングされている場合があるから。

それを強引に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:yh3tfuOH
vc2012だとbは全領域0になるのですがこれも環境依存ですか
0028デフォルトの名無しさん2016/01/25(月) 13:32:21.82ID:MTh5r7jR
>>27
吐かれた機械語読んで、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
>>25
・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
>>29
横からすまん

>>25
>特に、Tのコンストラクタが例外を発生しうるなら常に置き換えるべき。

これなんで?
003152016/01/25(月) 15:06:09.85ID:2nNO2C2F
>>29
すみません、一点大事なことをいい忘れてました。
BのlistC1はC2のそれとは同じでなく、後者は前者の部分集合で、C2オブジェクト間でlistC1の関連はなく、ソートも必要ないのでした。

いただいたアドバイスを元に改良しました。
http://ideone.com/nog6AP
(いくつかC++14の機能があったので、自分のC++11環境でビルドが通らなくて焦りました)

ところで、以下が分かりませんでした。よければもう少し教えていただけますか?

・計算式に複数の副作用を含むべきではない。評価順序によって値が変わる可能性がある。
・listC2の要素数が1つでない場合にlistC1の更新が誤ったものになっている。
0032デフォルトの名無しさん2016/01/25(月) 16:14:27.17ID:MTh5r7jR
>>30
f(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
>>31
> 計算式に複数の副作用を含むべきではない。評価順序によって値が変わる可能性がある。
これは、元コードの
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
そのC2/C3の属性はC1が含むべきじゃないの?
なんか設計ぶっ壊れてんね
0035デフォルトの名無しさん2016/01/25(月) 16:50:27.54ID:3jdDpl0p
とりあえずC2/C3をタイプオブジェクトパターンにすればいいんじゃね
003652016/01/25(月) 17:24:17.41ID:2nNO2C2F
>>33
>ただの関数呼び出しの場合には左から順に評価されるとは限らない
全く知りませんでした。超大事なことですね。
ありがとうございます。

>n回呼ばれうる事を考えるとfor文で全体を括った方が良いんじゃない?
仰る通り、実際の用途ではそうしてます。
003752016/01/25(月) 17:37:21.34ID:2nNO2C2F
>>34
いえ、クラスの親子関係、およびメンバにコンテナや親への参照(生ポ、スマポ、参照のどれにするかは別として)を持つこと自体は間違いない設計です。

>>35
タイプオブジェクトパターンとは何でしょうか?
デザインパターンにはないようですが、Factoryパターンの一種でしょうか?
0038デフォルトの名無しさん2016/01/25(月) 18:04:37.05ID:3jdDpl0p
>>37
れっきとしたデザパタ
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:6iy9dS6b
>>25
https://ideone.com/xLFO7G
・オリジナルの変数の依存関係と丸出しスタイルはそのまま
・メソッド名とかは一部変えた
・生のポインタだけで運用
・deleteは一箇所で一括に行う
・もっとスッキリすると思ったが書いてみると意外とそうでもなかった
004052016/01/25(月) 18:42:58.12ID:2nNO2C2F
>>38
>れっきとしたデザパタ
GoFのデザパタではないんですね。勉強します。

>とりあえずC2、C3が必ずC1を含むなら、
C3が含むのはC1ではなくC2です。IdeoneではC3は省いていますが。

>もしかしてC3やC2とC1の持つA/Bって別なん?
いえ、同じです。

実際のやりたいコードは2次元の幾何です。もっと早く言うべきだったかもしれません、すいません。
C1が点、C2が点を繋いだ線、C3が線で囲まれる多角形、BやAはそれらの上位のクラス(geometryみたいな名前)です。
004152016/01/25(月) 18:57:41.09ID:2nNO2C2F
>>39
インスタンスを所持するテンプレートクラスを作るのですね。勉強になります。
0042デフォルトの名無しさん2016/01/25(月) 19:12:59.35ID:3jdDpl0p
>>40
んーすまん、それでなんでこの設計になるのかわからん
とりあえずC1から取れるしC2/C3にA/Bのポインタいらないんじゃね

実現したいことがわからないが
幾何の表現なら一次元vectorで十分じゃね
index用vectorでn次元の部分集合の指定もできるし
004352016/01/25(月) 20:00:38.31ID:2nNO2C2F
>>42
>とりあえずC1から取れるしC2/C3にA/Bのポインタいらないんじゃね
それは仰る通りです。
ただ、c2->listC1[0]->refB とC1を辿るのが面倒だったのでC2に持たせてしまいました。

>実現したいことがわからないが
うーん、そんな変でしょうか?
実は幾何の入出力ファイル(他者製)もこのクラスの親子関係そのままのフォーマットになってて、
それをコードでも踏襲したという経緯です。
0044デフォルトの名無しさん2016/01/25(月) 20:18:32.30ID:MTh5r7jR
2次幾何の何がやりたいのか分からないって話じゃない?
接触判定でもしたいの?
0045デフォルトの名無しさん2016/01/25(月) 20:28:56.97ID:qUtW41iV
>>26
ISO/IEC 14882:2014の8.5p6を読む限りパディングはビット0になると読めるのだが不定になると言う根拠は?
0046デフォルトの名無しさん2016/01/25(月) 20:44:54.74ID:qUtW41iV
ちなみに8.5.1をさらりと読んだが
> hoge d = { 0, 0 };
に限ってはパディングがゼロ梅になるという記述が見つけられなかった
0047デフォルトの名無しさん2016/01/25(月) 21:14:32.48ID:3jdDpl0p
>>43
>うーん、そんな変でしょうか?
変っていうか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
>>45-46
そんなメガネクイーしてる暇あったら引用すりゃよくね?
>To zero-initialize an object or reference of type T means:
>...
>if T is a (possibly cv-qualified) non-union class type, each non-static data member and each base-class subobject is zero-initialized and padding is initialized to zero bits;
>if T is a (possibly cv-qualified) union type, the object’s first non-static named data member is zero initialized and padding is initialized to zero bits;
0050デフォルトの名無しさん2016/01/25(月) 22:02:04.00ID:aGf3VXDj
>>45-46
>26 じゃないけど、
構造体のパディングバイトが全ビット 0 になる保証はあるんだけど、
int を 0 に初期化したときにパディングビットも含めて全ビットが 0 になる保証は見当たらないんだ。

パディングビットがある環境も少ないだろうし、あるとしても numeric_limits<int> とか調べれば事前に
有無が確認できるとは思うけど。
0051デフォルトの名無しさん2016/01/25(月) 22:06:48.30ID:aGf3VXDj
>>32
> 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
>>39
> A *a(int i) {return as.add(new A(i));}
add() の中の push_back() で例外飛んだらリークする。
変な独自コンテナラッパーなんか作らないでおとなしくスマートポインタ使えばいいのに。
0053デフォルトの名無しさん2016/01/25(月) 22:45:59.01ID:u8HkWBJk
>>30
こういう誤りによるメモリリークを根絶するため
new自体がソースコード上に現れるのを避けるのが普通
f(unique_ptr<A>(new A), unique_ptr<B>(new B));

ちなみにコンストラクターの例外は関係無い
0054デフォルトの名無しさん2016/01/25(月) 22:51:40.35ID:MTh5r7jR
>>51
これは知らなかった。

それ自身のdtorは走らないみたいだから、fopenしてたり生のポインタ使ってたりすると危ないかも。
http://ideone.com/IOYMAt
0055デフォルトの名無しさん2016/01/25(月) 22:55:07.69ID:ATEV5j5o
>>52
> 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:aGf3VXDj
>>55 うん。
005752016/01/25(月) 23:27:49.38ID:2nNO2C2F
>>31により当初の目的だったweak_ptrの排除ができ、またスマポの使用が今回の場合
不適切というわけではなさそう(というか自分的にはベストな解)ことが分かり
満足したので、質問を締めさせていただきます。

回答くれた方どうもありがとうございました。
0058デフォルトの名無しさん2016/01/25(月) 23:46:30.78ID:u8HkWBJk
>>50
パディングビットの規定を探したらCにたどり着いた
これでよい?
C++ 3.9.1p3 Fundamental types
→ C言語 5.2.4.2.1 Size of integer types
→ C言語 6.2.6 Representations of types
→ C言語 6.2.6.2.5p5 Integer types
『The values of any padding bits are unspecified.』
0059デフォルトの名無しさん2016/01/25(月) 23:59:58.70ID:aGf3VXDj
>>58
そんなところ。
Cでも保証は無いよね。あったところでC++で「保証」とはいえないんだけど。
0060デフォルトの名無しさん2016/01/26(火) 00:41:34.27ID:LScUQqmU
>>57
とりあえずOpenGLとか触ったほうが良いと思います
0061デフォルトの名無しさん2016/01/26(火) 00:45:45.80ID:GVbqnwMe
>>60
なんで?
0062デフォルトの名無しさん2016/01/26(火) 00:55:25.80ID:LScUQqmU
>>61
データ構造が見えてなさそうだから
0063デフォルトの名無しさん2016/01/26(火) 01:15:04.16ID:88T0+SoF
3D空間上でvertexはedgeを、edgeはfaceを、faceはelementを構成するっていうデータ構造はごく普通でしょう
むしろ>>42みたいに全部vectorでやれとかいうほうがおかしい
0064デフォルトの名無しさん2016/01/26(火) 01:20:06.74ID:LScUQqmU
>>63
内包させるのは普通じゃないよ
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
>各々verticesとして持ってる
意味がわからない
elementとかの定義をvertexのリストだけでやるの?
tetraやhexaならいいけどpolyhedronはどうするの?
0067デフォルトの名無しさん2016/01/26(火) 01:38:32.76ID:usMbn1Xz
「普通」とか「おかしい」とか主観でモノを言っちゃうからめんどうなことになる。
>63はそういう構造をよく使う、あるいはよく見る。
>65はそういう構造を見たことが無い。
それだけのことなら相手に合意を迫る必要はまったく無い。
同じものを作ってるなら話は認識あわせに意味があるかもしれないけど、
ここじゃアカの他人なんだからそんなこともあるじゃろ、でおしまい。
二人とも、もう寝たほうがいいよ。
0068デフォルトの名無しさん2016/01/26(火) 01:38:35.41ID:zaDrFWLK
メッシュ変形なんかやるときは別だけど
OpenGLで表示させるだけなら普通は頂点とインデックス列だけで事足りる
0069デフォルトの名無しさん2016/01/26(火) 02:02:32.36ID:88T0+SoF
そっかごめん
自分機械設計屋なんだけど、流体シミュレーションだとpolyhedron要素があるんで
こういうデータの持ち方するのよね
OpenGLは使ったことないっす
0070デフォルトの名無しさん2016/01/26(火) 02:53:27.61ID:LScUQqmU
多面体使う人でもEdge主体の構造じゃないのか?
まあもういいや大した話じゃないし
0071デフォルトの名無しさん2016/01/26(火) 07:13:49.17ID:8rZ+8lOF
そこそこまっとうなことを言っているのに理解されなかった>>63が哀れ(チーン)
0072デフォルトの名無しさん2016/01/26(火) 07:26:37.18ID:RIXqMqyc
結局パディングはUMRんですか
0073デフォルトの名無しさん2016/01/26(火) 13:43:58.10ID:CloTf5dE
>>71
書き方が悪いんだよな
プログラマの思考と反対というか

elementは複数のfaceで構成され
faceは複数のedgeで構成され
edgeは複数のvertexで構成される

ていう書き方の方がよかったと思われ
0074デフォルトの名無しさん2016/01/26(火) 15:23:46.68ID:VGU1ghG/
>>73
いや、表現の問題じゃないでしょw
ちなみに俺はそっちより>>63のボトムアップ的な発想の方が自然

あんまり階層構造つくって持ちまわるよりは
フラットにしたほうが結局ラクなんじゃないかって発想には
俺も個人的には同意する
0075デフォルトの名無しさん2016/01/26(火) 16:05:26.42ID:MwP9iauO
継承を行うと親クラスのコンストラクタが隠蔽されてしまうのですが、
コンストラクタが継承されないこの仕様にはなにか深い訳があるのでしょうか。

多重継承が関係しているような気もするのですが、
そもそも単一継承のJavaも同様の仕様なのでもっと根本的な理由があるのだと思うのですが。
0076デフォルトの名無しさん2016/01/26(火) 16:07:43.83ID:MwP9iauO
すみませんサンプルの貼り付けを忘れていました。
http://ideone.com/v8QQHq
0077デフォルトの名無しさん2016/01/26(火) 16:29:07.16ID:uqIl8Fge
>>75-76
サンプル 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
例えば有名なモデリングソフトのメタセコイアのMQOファイルはモデルを>>73みたいに記述してあるよ
ただしedgeは無く、面は複数の頂点で表現されてたが

エレメントが複数の面で構成されるのは仕方ないし
面が複数の頂点で構成されるのも仕方ないように思うが

なんでもフラットな方が便利なのは常識だが
一体どうやってフラットにするのか興味があるわ

struct face{ int elem_no; float v[16][3]; int v_size; };
vector<face> faces;

こんなデータ構造じゃ、特定のエレメントだけ抜き出すのが大変だし
さらにもっとフラットにして

struct vertex{ int elem_no; int face_no; float v[3]; };
vector<vertex> vertices;

こんな構造にしちゃうと、かなりフラットになるが、面単位で何かするのに
まず同じface_noに属する頂点を探し回らなきゃならなくて超面倒なんだが
さらにもっとフラットにすると

struct vertex_elem{ int elem_no; int face_no; int vertex_no; int x_y_z_flag; float value; };

さすがにこれは無いか
0080デフォルトの名無しさん2016/01/26(火) 16:48:50.66ID:XdnYao0l
X(int i) : Base(i) {}
を書くのが面倒くさいということか?
それを自動生成するのは条件を絞れば可能かも知れんが余計に分けわからなくなりそう
0081772016/01/26(火) 16:51:07.74ID:uqIl8Fge
>>77 は勇み足だった。C++11だと下のように書くか。

#include <iostream>
using namespace std;

struct Base {
int i;
Base(int i) : i {i} { cout << "ok! I got " << i << endl; }
};

struct X : public Base {
X(int i) : Base {i} {} // Base::Base() でなく
};

int main() {
X x {1}; // Base側のコンストラクタを呼べるでしょ
cout << "Yes, x.i == " << x.i << endl;
return 0;
}


明示的なコンストラクタ呼び出しでなく {} による初期化。
0082デフォルトの名無しさん2016/01/26(火) 17:13:30.76ID:MwP9iauO
>>80
そうです、Baseを継承する派生クラスが沢山ある場合が面倒です。
コンストラクタの継承が行われれば、派生クラス側でわざわざ決まりきったコンストラクタを書かずに済むのでコードがシンプルになるなのですが、
それが出来るオブジェクト思考言語は意外と少ないです。
0083デフォルトの名無しさん2016/01/26(火) 17:37:45.67ID:5mNKNaDj
>>82
class 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だと引数無しのときだけチョッと手間省けるね
0085842016/01/26(火) 17:46:54.81ID:LDY5A4Ql
ごめん、今確かめたらそれはC++でも一緒だったw
struct Base {
int i;
Base() : i(0) { cout << ”ok!”; }
};
struct X : public Base {};
これで X x; は普通に行けたねw
0086デフォルトの名無しさん2016/01/26(火) 17:50:26.64ID:XdnYao0l
>>82
なるほど。それなら分かるわ
基底クラスのコンストラクタはある意味継承されてるんだけど
protected(ちょっと違うけど)みたいな扱いになってるんだよな
何かキーワードとかであなたの言う意味での継承が出来てもよい気がしてきた
0087デフォルトの名無しさん2016/01/26(火) 18:41:50.54ID:/Dc76BnU
>>75
釣りは要らん
その内 コンストラクターの継承も知らないのかバーカバーカ
と言うんだろ?
0088デフォルトの名無しさん2016/01/26(火) 19:55:14.89ID:XdnYao0l
釣られたわ
C++11から出来るようになってるね
http://ideone.com/PwOSrY
0089デフォルトの名無しさん2016/01/26(火) 20:04:25.08ID:yZwoVaS8
>>88
それで十分に嬉しいように見えるんだけど
using Base::Base;の一行を書くのは>>75的には
「子から間接的に呼び出す必要がある」に該当しないのかな?

あと>>77が何を言っているのか意味不明なの俺だけ?
0090デフォルトの名無しさん2016/01/26(火) 21:25:05.76ID:I8Y70xN6
>>51
これってコンストラクタ中から例外飛んで来たらいずれにせよメモリリークするから無駄って解釈でいいの?
この例だとdeleteはされるけど、結局デストラクタが呼ばれるわけじゃないからメンバにポインタ混じっててnewしてたりするとリークするよな
0091デフォルトの名無しさん2016/01/26(火) 21:52:07.33ID:8rZ+8lOF
構築が終わっていない中途半端な状態でデストラクターが呼ばれたらそれこそ大変だ
少しは脳みそ使った方がいいぞ
0092デフォルトの名無しさん2016/01/26(火) 22:52:14.01ID:IXu06oBB
C++ではインスタンスxのコンストラクタ内で例外が発生した場合、
xのデストラクタは呼ばれない(理由は>>91の通り
という言語仕様なのは真実なので、逃げ手としてnewに細工がしてあるだけの話

生のハンドルとかはこれそのものでは救えない。
コンストラクタで生のハンドルを確保するコードを普通に書いたら、コンストラクタが例外を生じたときにリークする

それを避けるための正しいテクニックは、
1) きちんとハンドル(リソース)のwrapperを書いて、
2) そいつをxのメンバにしとく
である(メンバのデストラクタは、xのコンストラクタが例外を生じても呼ばれる

んまー常識的には「コンストラクタで例外を発生させない」とか「例外が発生したら諦める」設計のが
特殊な用途以外では普通な希ガス、
0093922016/01/26(火) 22:56:25.94ID:IXu06oBB
>>92プチ訂正
s/コンストラクタ内で例(が|を)発生/コンストラクタから例外をスローさせない/g

コンストラクタ内で例外が発生しそうなところはtry { } catch { }で囲ってしまうのも一つの手ではある
0094デフォルトの名無しさん2016/01/26(火) 22:58:40.82ID:usMbn1Xz
>>90
RAII の徹底ができていなければリークする可能性が出てくる。
例外の発生がコンストラクタからかどうかはあんまり関係ない。
0095デフォルトの名無しさん2016/01/26(火) 23:02:54.28ID:RBo8KHcc
やはりバカにはC++の敷居が高いようだな
0096デフォルトの名無しさん2016/01/26(火) 23:05:13.87ID:8rZ+8lOF
ラッパーを使うのは王道な一つの手だが
一つの関数内で例外安全なコードを書いてればリークは起こらない。
それすら出来ないようでは他の言語を使った方がいい

「コンストラクタで例外を発生させない」と言うのはやや方向性が違っていて
「プログラムを書かなければリークは起こさない」レベルの思考
0097デフォルトの名無しさん2016/01/26(火) 23:06:58.14ID:zcSlqmoV
>>95
自己紹介はしなくていいぞ
0098デフォルトの名無しさん2016/01/26(火) 23:12:32.60ID:I8Y70xN6
じゃあもしライブラリとして提供されてるクラスがメンバに複数ポインタ持っててコンストラクタで複数newして、しかもメモリが足りなくなる可能性が結構高い場合はどうすりゃいいんだ?
他のライブラリ使うのはいろんな理由で無理、ライブラリの互換性のために元のソースいじれないってなったら漏れたらあきらめるしかないのか?
0099デフォルトの名無しさん2016/01/26(火) 23:14:58.68ID:8rZ+8lOF
例外安全でない糞ライブラリの中身をいじれない場合はどうすればよいの?

質問しなきゃわからないほど馬鹿なのか
0100デフォルトの名無しさん2016/01/26(火) 23:22:01.99ID:I8Y70xN6
>>99
今まさに近い状況になってて、例外飛んでくるのはまた別の原因なんですけど
実際どうすればいいんですか?自分一人だけライブラリ使わないってのはできないんですけど
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
>>100
ライブラリがバグってるならどうしょうもないだろ
>>102
ずいぶんとおめでたい世界にいらっしゃるようで
0104デフォルトの名無しさん2016/01/26(火) 23:28:08.68ID:sH2SZupb
コンストラクタで例外が発生したらそのクラスの何を解放するんだ
0105デフォルトの名無しさん2016/01/26(火) 23:28:59.31ID:4LzhB3JY
mallocに失敗したのにexit前にfreeを呼びたい
みたいな不思議な連中は一定おるんよ
0106デフォルトの名無しさん2016/01/26(火) 23:30:11.03ID:8rZ+8lOF
>>101
おおまかにはそれでよいが
最低限 例外中立にしとくのがマナー
具体的にはfunction-try-blockを使うかthrow;で再スローするかラッパーを使うか
0107デフォルトの名無しさん2016/01/26(火) 23:30:13.68ID:sH2SZupb
例外発生する=アプリを終了するってなんなんだよ
0108デフォルトの名無しさん2016/01/26(火) 23:30:33.16ID:XdnYao0l
>>104
例外発生するまでに確保済みのリソース
そんな面倒なことにならないようにRAIIの徹底はもう必須だよ
0109デフォルトの名無しさん2016/01/26(火) 23:31:01.96ID:CloTf5dE
ちなみにnewしたオブジェクトのコンストラクタ内で例外が発生した場合
デストラクタは走らないけどoperator deleteは呼ばれるからメモリリークしないよ
0110デフォルトの名無しさん2016/01/26(火) 23:34:08.88ID:TGWAfBDP
>>98
その通りだよ。
0111デフォルトの名無しさん2016/01/26(火) 23:38:07.07ID:8rZ+8lOF
>コンストラクタ内で例外が発生した場合デストラクタは走らない

揚げ足を取ると、走るケースが全くない訳ではない
0112デフォルトの名無しさん2016/01/26(火) 23:44:41.90ID:usMbn1Xz
>>111 ほんとならくわしく。
0113デフォルトの名無しさん2016/01/27(水) 00:02:05.29ID:zgyqI55G
>>112
コンストラクタ内で例外が発生してもコンストラクタ内でキャッチしてしまえば走らない
コンストラクタ内で例外が発生してもコンストラクタ内でキャッチしてしまえば走らない
0114デフォルトの名無しさん2016/01/27(水) 00:02:50.96ID:zgyqI55G
ごめwwwwwwww
走るの間違い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:zSFGO6dq
いや普通にバグだから
0118デフォルトの名無しさん2016/01/27(水) 00:47:13.92ID:tYkYQITg
それでお客様が納得してくれるとでも?
0119デフォルトの名無しさん2016/01/27(水) 00:52:40.92ID:0q1DRp6s
仕様ですの一点張り
0120デフォルトの名無しさん2016/01/27(水) 01:45:10.90ID:zgyqI55G
>>100
longjump()か例外をthrowするかして大域脱出すると良い
ID:I8Y70xN6が。
0121デフォルトの名無しさん2016/01/27(水) 02:00:29.05ID:gidaw1Ah
コンストラクタ内でtry catch 再throwでいいんだろ?
何も難しいことなんてないじゃない。
0122デフォルトの名無しさん2016/01/27(水) 03:05:27.95ID:3jiwec3B
>>113
なるほどな
ちなみにコンストラクターから例外が漏れた場合でもデストラクターは走る事がある
struct A {
 A() {}
 A(int) : A() {throw 0;}
 ~A() {}
};
int main() {
 A a{0};
}
0123デフォルトの名無しさん2016/01/27(水) 06:38:25.30ID:oAun2w+9
>>121
つ初期化子
0124デフォルトの名無しさん2016/01/27(水) 07:11:47.54ID:3jiwec3B
>>123
初期化しがどうかしたか?
カタコトではただのアスペだぞ
0125デフォルトの名無しさん2016/01/27(水) 07:34:44.55ID:T1kNk2gL
>>108
それはそのクラスが内部で処理することであってユーザーは何を解放するんだよ
0126デフォルトの名無しさん2016/01/27(水) 08:01:41.14ID:7tk5IOS7
↑こんなところにアスペがもう一人
0127デフォルトの名無しさん2016/01/27(水) 10:47:19.58ID:oAun2w+9
>>124
コンストラクタ初期化子
0128デフォルトの名無しさん2016/01/27(水) 12:30:07.60ID:eULyfEEH
>>125
>それはそのクラスが内部で処理することであって

ずっとその話なのだが
0129デフォルトの名無しさん2016/01/27(水) 12:56:11.97ID:zSFGO6dq
初期化子もそうだけどデフォルトコンストラクトされる変数もそうだな
コンストラクタ内でtry-catchできない
やっぱりコンストラクトでの例外はまずいんじゃないか?
0130デフォルトの名無しさん2016/01/27(水) 13:59:04.99ID:oAun2w+9
C++17ではできるんだっけ?
0131デフォルトの名無しさん2016/01/27(水) 17:48:02.83ID:gidaw1Ah
初期化子リストもメンバ変数も関係なくね?
初期化しきれたクラスはデストラクタが呼ばれ、初期化できなかったクラスは内部でcatchしてエラー処理して再送するだけ。
やっぱ単純だよ。

我らがMeyer先生はなんて言ってるの?
0132デフォルトの名無しさん2016/01/27(水) 18:08:44.32ID:7tk5IOS7
>>129
できないと判断した根拠は?
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
>>127
荒らしは去れ
0135デフォルトの名無しさん2016/01/27(水) 18:45:02.79ID:oAun2w+9
>>131
コンストラクタ初期化子に書くメンバーが初期化はコンストラクタのスコープ内部じゃない。
自作クラスだったら君の言うように内部catchすればいいけど他作クラスで例外をthrowするタイプだtry-catchで囲めない。
0136デフォルトの名無しさん2016/01/27(水) 18:49:38.11ID:oAun2w+9
>>134
まさか14以降を前提にしてるなんて言うまい?
0137デフォルトの名無しさん2016/01/27(水) 19:31:29.47ID:3jiwec3B
>>136
お前はコンストラクター初期化子や例外という言語機能が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:1b0Lj9r3
クラス名(引数) : この部分は初期化子 {}
0141デフォルトの名無しさん2016/01/27(水) 20:41:04.94ID:aFoLhF8M
>>140
とんくす!
↓少し学んだ

ISO/IEC 14882:1998
12.6.2 Initializing bases and members
ctor-initializer:
 : mem-initializer-list

mem-initializer-list:
 mem-initializer
 mem-initializer , mem-initializer-list

mem-initializer:
 mem-initializer-id ( expression-listopt )

mem-initializer-id:
 ::opt nested-name-specifieropt class-name
 identifier
0142デフォルトの名無しさん2016/01/27(水) 20:44:21.08ID:gqKHFo+S
>>129
だからtry-catchなんかしない。>>94,108のとおりRAIIで解決する。

なんというか10年前にタイムスリップした感がある。↓読んでくれ。
https://www.google.co.jp/search?q=C%2B%2B+%E3%82%B3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF+%E4%BE%8B%E5%A4%96
0143デフォルトの名無しさん2016/01/27(水) 21:00:23.97ID:zSFGO6dq
>>132
あなたのおっしゃる通りです。いい加減なこと言ってごめんなさい魔が差しましたw
やはり大事なのはRAIIの徹底ですね
0144デフォルトの名無しさん2016/01/27(水) 21:08:05.10ID:oAun2w+9
>>137
えっ?
初期化子までtry説に含めるのはC++11ではできないって言いたいだけなんだけど?
0145デフォルトの名無しさん2016/01/27(水) 21:09:24.27ID:oAun2w+9
×try説
○try節
0146デフォルトの名無しさん2016/01/27(水) 21:10:04.69ID:0xRCKJUw
RAIIって初期化がキモみたいなネーミングだけどデストラクタの解放の方が大事じゃね
0147デフォルトの名無しさん2016/01/27(水) 21:13:01.64ID:1b0Lj9r3
>>141
ああ、構文規則の非終端記号名のmem-initializer-listと混同していたのか。
0148デフォルトの名無しさん2016/01/27(水) 21:16:28.24ID:3jiwec3B
>>144
ISO/IEC 14882:1998 15p1 8行目
ISO/IEC 14882:2003 15p1 8行目
ISO/IEC 14882:2011 15p1 8行目
ISO/IEC 14882:2014 15p1 8行目

これのどこを読んだらいったいそんな嘘が出てくるのか
0149デフォルトの名無しさん2016/01/27(水) 21:19:58.24ID:hY0OCllE
だからHaskell使えと言っとるだろがボケ。
0150デフォルトの名無しさん2016/01/27(水) 21:23:34.50ID:zSFGO6dq
>>144
俺はあなたに釣られちゃったけどこれが真実です
http://ideone.com/rVg5CP
0151デフォルトの名無しさん2016/01/27(水) 21:26:16.20ID:Qr5LJlmv
このスレって常連の2、3人がID変えながら互いを罵ってんだよな?
0152デフォルトの名無しさん2016/01/27(水) 21:27:35.65ID:3jiwec3B
>>150
C++14の結果のようだが
コミュ障は去れ
0153デフォルトの名無しさん2016/01/27(水) 21:28:27.16ID:oAun2w+9
>>148
えっえっ?!?!
今の今まで「14になったら使える機能か楽しみだ」と思ってた...
0154デフォルトの名無しさん2016/01/27(水) 21:30:40.94ID:hs0c0BKx
> C++14の結果のようだが

そこは突っ込むのが正解なのかw
なんか深遠な理由があるのか
高度な釣りなのかわかりかねたわ(>>144に対してC++14の結果貼り付け)
0155デフォルトの名無しさん2016/01/27(水) 21:33:45.85ID:0q1DRp6s
初期化子って何だ?
もしかしてメンバイニシャライザのこと?
0156デフォルトの名無しさん2016/01/27(水) 21:36:46.74ID:0q1DRp6s
>>153
Exceptional C++に出てくるぐらいにはメジャーだったはずだぞ
0157デフォルトの名無しさん2016/01/27(水) 21:40:42.54ID:3jiwec3B
>>155
それはですね
狡猾な>>140が初期化子リストとメンバー初期化子とコンストラクター初期化子を混同した>>138を惑わすために出した用語なんです気にしないで
ちなみに規格ではnew A(100)とかの『(100)』の部分を指します
0158デフォルトの名無しさん2016/01/27(水) 21:40:46.23ID:5WlKM79a
>>155
> メンバイニシャライザ

それちなみにどこで習ったの?
どこの流儀?
0159デフォルトの名無しさん2016/01/27(水) 21:42:32.38ID:zSFGO6dq
>>152
はあそんなところに突っ込まれるとはw
>>153
あなたはC++14でもだめでC++17になったら出来るかもって思ってたでしょw
0160デフォルトの名無しさん2016/01/27(水) 21:43:28.66ID:oAun2w+9
申し訳ない。釣りではなく本当にfunction-try-blockはこれから来る規格だと思っていた。
>>156
持ってるけどそんな記述あったかな?
0161デフォルトの名無しさん2016/01/27(水) 21:43:53.84ID:3jiwec3B
>>158
>>141を100回読み直してこい
0162デフォルトの名無しさん2016/01/27(水) 21:45:04.77ID:0q1DRp6s
>>158
流儀?
メンバ変数の初期化を行うのはmember initializerだぞ
0163デフォルトの名無しさん2016/01/27(水) 21:46:53.21ID:gqKHFo+S
>>150
> B() try : _id(GetId()), _a(_id)
> {
> cout << "B:B" << _id << endl;
> }
> catch(int ex)
> {
> cout << "B:B" << _id << " exception " << ex << endl;

このcatch内でのメンバ変数 _id の参照は未定義動作になる。
15.3 [except.handle] p10
> Referring to any non-static member or base class of an object in the
> handler for a function-try-block of a constructor or destructor for that
> object results in undefined behavior.
0164デフォルトの名無しさん2016/01/27(水) 21:47:25.50ID:0q1DRp6s
>>160
お前絶対読んでないだろw
0165デフォルトの名無しさん2016/01/27(水) 21:48:01.49ID:VHRBi97o
>>162
ごめんごめん、純粋に何でその名前を学んだか知りたかっただけ
上でも書いたけど俺はC++プライマーって本を読んで学んだんだけど
たしかそれは 初期化リスト って書いてあったはずなんだ(多分)
だからみんなソレをどこで学んで何と呼んでるのか気になっただけ
0166デフォルトの名無しさん2016/01/27(水) 21:49:15.00ID:oAun2w+9
多分、なんか大昔の記事を読んで最新のものと勘違いしたまま来てしまったのだ...
鬱だ
0167デフォルトの名無しさん2016/01/27(水) 21:51:52.82ID:zSFGO6dq
>>163
ごめん
その点は危ういと思ったけどGCCだと取り敢えず意図通りになってたから
話の本筋的にはどうでもいいと思っちゃった
0168デフォルトの名無しさん2016/01/27(水) 21:52:17.67ID:0q1DRp6s
すまん見直したらMoreの方だったw
0169デフォルトの名無しさん2016/01/27(水) 21:52:25.06ID:3jiwec3B
>>163
そういやそんな決まりがあったな
すっかり忘れてた
0170デフォルトの名無しさん2016/01/27(水) 21:54:30.71ID:oAun2w+9
>>168
安心した。ありがとう。
俺が持ってるのは2000年11月15日発行とある。
みなさん、すいませんでした。
0171デフォルトの名無しさん2016/01/27(水) 21:54:40.52ID:88/bqypu
みんな企画とか読んでるのか偉いですね
1ページも読んだことないわ
0172デフォルトの名無しさん2016/01/27(水) 22:01:47.89ID:0q1DRp6s
>>170
Moreも2001年なんだから安心するなよw
その頃からメジャーどころは載ってたはずだ
0173デフォルトの名無しさん2016/01/27(水) 22:10:37.63ID:0q1DRp6s
>>165
あまり意識したことはないので
恐らくコンパイラのメッセージだな
規格も読んだが後付けだと思う
0174デフォルトの名無しさん2016/01/27(水) 22:13:35.94ID:oAun2w+9
鬱だ
0175デフォルトの名無しさん2016/01/27(水) 22:15:41.80ID:jBJgujTM
>>173
> 恐らくコンパイラのメッセージだな

なるほどなるほど!
こういうレスをついにもらえて俺喜んでる
0176デフォルトの名無しさん2016/01/27(水) 22:27:11.15ID:vltUk2i7
ここは罵倒したりされたりを楽しむ変態スレ。

記憶でレス→お前バカか→バカはお前→証拠だオラ→悪ぃ悪ぃw

これが挨拶みたいなもん。
一度した発言は曲げてはならないという。
0177デフォルトの名無しさん2016/01/27(水) 22:35:48.89ID:zgyqI55G
RAIIは論理的には正しいかもしれないが
記述量の割に得られる対価が例外に対する備えだけ、
というのが気に入らない

RAIIなプログラムのメモリ消費量はなかなか安定に達しないから(∵確保したり開放したりで断片化が進んだり治まったり、
意図とはうらはらに、実は第三者に対してメモリリークが無いことの証拠提示がヒジョーに厄介なプログラムになってしまったりする
0178デフォルトの名無しさん2016/01/27(水) 22:45:20.30ID:gqKHFo+S
>>177
隙だらけすぎるだろ。

> 記述量の割に得られる対価が例外に対する備えだけ、
基本的なところは標準ライブラリでカバーされてるんだけど、記述量ってどんなコード想定してんの?
それに、例外以外にreturnやbreakにも利くよ。

> RAIIなプログラムのメモリ消費量はなかなか安定に達しないから(∵確保したり開放したりで断片化が進ん
確保解放のパターンがRAIIで規定されるわけないし、使い方でどうにでもなるでしょ。

> 意図とはうらはらに、実は第三者に対してメモリリークが無いことの証拠提示がヒジョーに厄介なプログラムに
RAII使わない、生でdeleteやらなんやら書いてるコードよりはマシでしょ。悪化する例があるなら見たい。
0179デフォルトの名無しさん2016/01/27(水) 22:49:16.44ID:zSFGO6dq
>>177
?それはおかしな見解だな
RAIIを徹底するほうが記述量も少なくなる(delete書かなくて済むんだから)し、
メモリリークが無いことも遥かに容易に証明できると思うが?
それで納得しない第三者なんて頭が腐ってるんだから相手にするだけ無駄
断片化については直接new、deleteするのと変わらないし
0180デフォルトの名無しさん2016/01/27(水) 22:55:49.88ID:zgyqI55G
>>178
いちいち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
>>179
>そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする
この危険性についてコードを見るだけで検証完了という信じる方がよっぽどキチ

同じコードを見る話なら、固定長の配列の方が安心できる
0183デフォルトの名無しさん2016/01/27(水) 23:00:49.72ID:0xRCKJUw
あらゆる箇所にいちいちdelete Tとか打ちたくないわ
0184デフォルトの名無しさん2016/01/27(水) 23:04:15.53ID:zgyqI55G
>>183
もちろんナマポも極力使わない
やっても関数内で確保したやつを関数を抜けるとき全部開放する使い方のみとしたい(この用途には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:zgyqI55G
加えてRAIIにはマルチコア時代にふさわしくない疑いがある
RAIIで確保したり開放したるするメモリがスレッド固有という保証が無い限り、
確保や開放の度に排他制御が行われる
スタック上にとられた配列がペナルティーゼロであることを鑑みれば、
InterlockedIncrement()ですら塵も積もれば巨大なコスト足りえる
0188デフォルトの名無しさん2016/01/27(水) 23:18:25.90ID:zSFGO6dq
そんなにヘビーなループで確保/解放を繰り返さなきゃいけない場面では俺だってダイナミックアロケーションを避けるけどね
0189デフォルトの名無しさん2016/01/27(水) 23:20:30.30ID:eULyfEEH
>>187
言っていることがよくわからないね
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
 今は「プログラミング言語 第4版」が新しく出たようだけど、今はC++14らしいが、
この本はC++11のようで、編集が一歩遅れてるという印象は否めない。
 読者はC++14準拠の第5版を望んでるかもしれないな。
0193デフォルトの名無しさん2016/01/27(水) 23:27:07.17ID:0q1DRp6s
>>177
>記述量の割に得られる対価が例外に対する備えだけ
さすがにこれはないわなあ
今更RAII無しでlockとか絶対使いたくない
0194デフォルトの名無しさん2016/01/27(水) 23:47:08.39ID:0q1DRp6s
ここまで俺の自演
0195デフォルトの名無しさん2016/01/27(水) 23:47:41.22ID:tYkYQITg
前にEffectiveC++も新版が出たけど、もう絶対的な名著ってわけでもないような
0196デフォルトの名無しさん2016/01/27(水) 23:52:26.77ID:gqKHFo+S
>>180
10年ぐらい前にはこんな爺さんがよく居たもんだが、まだ居るのか・・・。

> いちいち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
>>195
古いのは確かだがまだ十分使えると思うね
他に初心者用の良い本があれば別だけど
0198デフォルトの名無しさん2016/01/27(水) 23:57:30.71ID:0q1DRp6s
スマポはgoogleやmozillaのソース見ればそこらじゅうにあるな
それを全部書き下せる自身があるならどうぞ
0199デフォルトの名無しさん2016/01/28(木) 00:38:12.26ID:5VmqP1pO
>>132
絶望した!

>>135
いやいや、初期化子に並んでるクラスまでtryで囲む必要ないでしょ?
彼らは彼らで後始末するのだから。

自分の後始末せずに例外投げるクラスがいたら、どんな手段を使ったって後始末できないよ。
コンストラクタに限る問題じゃない。
0200デフォルトの名無しさん2016/01/28(木) 01:13:22.83ID:9zxCdjKY
>>199
後始末したあと例外を投げて来るやつをcatchするんじゃない?
0201デフォルトの名無しさん2016/01/28(木) 06:48:43.02ID:OteWNMPZ
RAIIってなんて発音するの?
ライー? ラッツー?
0202デフォルトの名無しさん2016/01/28(木) 07:29:19.73ID:y2I8o1dH
ラール
0203デフォルトの名無しさん2016/01/28(木) 07:37:04.01ID:WeC7vVSZ
ライッ!
0204デフォルトの名無しさん2016/01/28(木) 07:41:40.98ID:y2I8o1dH
>>199
catch(...)
0205デフォルトの名無しさん2016/01/28(木) 08:26:24.97ID:5VmqP1pO
>>204
言葉足らずですまんが、自分が言及した自分自身の後始末っていうのはそのクラス内部の後始末のこと。
ハードを止めるとかメンバのメモリ開放とか。

使う側のクラスは後始末しないクラスの内部のことなんてわからないから、どんな手段を使ったってそのクラスの後始末はできない。
だから、そんなクラスがいることを前提として議論するのはおかしいってこいいたかったわけ。
そのクラスの提供者に直してもらうしかない。
0206デフォルトの名無しさん2016/01/28(木) 08:35:58.09ID:9zxCdjKY
>>205
それは正しいが、そこが論点じゃないと思う。
コンストラクタ内でエラーが起きたとき、「後始末はちゃんとやったあと例外をthrowする」クラスに
対処することを想定してる。
0207デフォルトの名無しさん2016/01/28(木) 08:51:24.46ID:5VmqP1pO
>>206
対処する必要なんてあるの?
繰り返すけど、
初期化子で構築完了したクラスはデストラクタで後始末されて、例外吐いたクラスも自身のtrycatch再throwで後始末してるんだぜ?
親側自身の雑多な初期化処理は始まってもいない。

…と書いてみたが、自分が間違ってるわ。
これで対応できない例外シチュもあり、そんな場合は個別対応すればよいだろうとは思ってたけど、例外とは呼べないほどそんな場面は多い気がしてきた。
0208デフォルトの名無しさん2016/01/28(木) 09:29:37.28ID:ptM8I7fQ
>>207
「これで対応できない例外シチュ」ってどんなの?
0209デフォルトの名無しさん2016/01/28(木) 11:10:21.47ID:5VmqP1pO
>>208
dispose()とかclose()みたいな関数を呼んでやらないと終了処理できないやつ。
0210デフォルトの名無しさん2016/01/28(木) 11:21:23.95ID:ptM8I7fQ
>>209
fclose や fstream みたいな、能動的操作処理と破棄処理が不可分になってるもののことかな。
そういうクラスをメンバを持つクラスのコンストラクタで例外が出たとした場合に行う「個別対応」って、
たとえばどんなの?
デストラクタが最低限の処理をしてくれてれば何もしなくていいケースがほとんどだと思うんだけど。
0211デフォルトの名無しさん2016/01/28(木) 13:13:16.79ID:5VmqP1pO
>>210
終了処理がsendfinとかwaittimeoutとかだったりしたら、デストラクタで勝手にやられたら困らね?
非対称的に終了処理関数が用意されてることも少なくないと思う。
バグなら直せと言えるけど、設計いけてないから直せとはなかなか要求しにくい。
0212デフォルトの名無しさん2016/01/28(木) 13:56:52.11ID:tIrgtpz+
デストラクタでfcloseとか何ですのん?
ファイル操作をオブジェクトの寿命で扱うのって大掴みすぎねぇ?
だからコンストラクタやデストラクタでそんなもんの例外までに話が至っちまう
書き込む瞬間、読み無瞬間だけ一瞬だけファイルを開けや
そこまではバッファに書きこんどけや糞ども
0213デフォルトの名無しさん2016/01/28(木) 14:51:57.24ID:Fy8z7rZ+
一つわかった
RAIIと例外を背反と考えてる人がいる
0214デフォルトの名無しさん2016/01/28(木) 19:35:11.13ID:CFwd7jm1
>>212
ログライブラリを開発しているのですが
一瞬だけ開くようにすると処理時間が100 倍以上
になって困っています。
どうすればよいですか?
0215デフォルトの名無しさん2016/01/28(木) 19:59:05.52ID:9zxCdjKY
>>212
ファイル書き込みオブジェクトをファクトリ関数経由で
一時オブジェクトとしてしか生成できないようにしたことがある。
書き込んだらすぐデストラクタが走るのさ。
0216デフォルトの名無しさん2016/01/28(木) 19:59:21.20ID:D7v4IB1O
バッファが無限にあると思ってる人に聞くだけ無駄
0217デフォルトの名無しさん2016/01/28(木) 20:01:49.04ID:VbpHGgsr
>>215
kwsk
0218片山博文MZ ◆T6xkBnTXz7B0 2016/01/28(木) 20:02:05.39ID:YC3cOEYy
>>214
出力が遅いなら、キャッシュとして出力内容をためておけば
0219デフォルトの名無しさん2016/01/28(木) 20:11:54.15ID:D7v4IB1O
アプリが落ちて肝心な最後のログレコードが見えないのでしたチャンチャン
0220デフォルトの名無しさん2016/01/28(木) 21:05:31.79ID:DYq8nyhg
ログを安易にバッファリングする奴は間違いなく低能
0221デフォルトの名無しさん2016/01/28(木) 23:03:17.58ID:iP985GXo
自作プログラムのログを取る必要が未だ生じたことが無い天才かも知れん
0222デフォルトの名無しさん2016/01/28(木) 23:07:22.96ID:YmAPLaNv
んなこたない
糞コテ=馬鹿 で決まり
0223デフォルトの名無しさん2016/01/28(木) 23:11:59.87ID:iP985GXo
ログメッセージを複数スレッドから単一のコンソールに出す場合はcerrよりcoutの方がメッセージの1行同士が混ざる危険性が目に見えて減る
デバッグレベルならprintf()して何か条件を満たしたらfflush(stdout); throw;、が最強
0224デフォルトの名無しさん2016/01/28(木) 23:17:33.09ID:Fy8z7rZ+
>>223
>ログメッセージを複数スレッドから単一のコンソールに出す場合はcerrよりcoutの方がメッセージの1行同士が混ざる危険性が目に見えて減る
気のせいだろ
マルチスレッドなら、素直に同期したほうが良いぞ
0225デフォルトの名無しさん2016/01/28(木) 23:50:40.02ID:ptM8I7fQ
>>211
その困る場合の「対処」の例が聞きたかった。
デストラクタに嫌な終了処理が埋まってて困るという場合は対処のしようも無い
=結局何もしなくていいんじゃないの?
それで実用上の問題があるなら直せと言えるはず。

コンストラクタで例外が飛んだってことは問題の終了処理を持つオブジェクトを使って
やろうとしてた処理全体は失敗したわけで、正常処理の締めに必要な
終了処理( fstream で close() とか)の明示的呼び出しも必要ないことが多いだろうし。
0226デフォルトの名無しさん2016/01/29(金) 19:24:04.25ID:dpjhh/AA
>>52
> > 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
>>227
そんな意味不明なreserveする奴が偉そうなこと言っても
0231デフォルトの名無しさん2016/01/29(金) 23:35:27.84ID:ASWZHNV8
>>226
おじいちゃん、「おとなしくスマートポインタ使えば」おkだっていったでしょ。聞こえてる?
0232デフォルトの名無しさん2016/01/29(金) 23:52:06.13ID:Hpd/92hj
>>230
いや意味が全く無いわけではない
std::vector::push_back()呼び出し時点での余分な領域確保とか、速度低下が最小化される
0233デフォルトの名無しさん2016/01/30(土) 00:09:33.50ID:VhIzDspW
>>232
230 じゃないけど、 >227 の reserve() で「速度低下が最小化される」なんてことは無いでしょ。
単発なら変わらないだろうし、ループした場合は reserve() しないほうが速いし。
0234デフォルトの名無しさん2016/01/30(土) 00:17:51.94ID:lYkNZO2m
>>232
ないない
push_backで領域が足りなければreserve相当のことは自動的にされるし
まあないだろうがstd::vectorの実装によってはsize()+1のreserveが速度に悪影響与えることだってあり得るんじゃないかな
>>227のもう一つ痛いところはreserveさえしておけばpush_backでの例外が無いと決めつけてるところ
そんな規定はないだろ?
0235デフォルトの名無しさん2016/01/30(土) 00:21:53.24ID:nKxSIfYZ
>>234
> push_backでの例外が無いと決めつけてるところ

というより、それを一切考慮してない希ガスw
そいつ一人だけ問題の本質に到達できていない
bad_allocが投げられるのは一緒ってことも知らないんだろうし
0236デフォルトの名無しさん2016/01/30(土) 00:55:16.18ID:GfziY506
はてどこからbad_allocが出てきたのか
0237デフォルトの名無しさん2016/01/30(土) 03:14:53.57ID:HpDJFp9+
>>233、>>234
漏れは慎重に「std::vector::push_back()呼び出し時点での」と限定して書いたで?
0238デフォルトの名無しさん2016/01/30(土) 05:43:02.21ID:VhIzDspW
>>237
ん?だから何?
push_back() 関数内での領域確保・実行時間を減らして、それらを push_back() の
直前の処理に移動することに何か意味があるとでもいうの?それはどんな場合にうれしいの?
0239デフォルトの名無しさん2016/01/30(土) 05:59:47.15ID:GfziY506
A「意味がないわけではない」
 「〜される」
B「そんなことは ない」
A「そんなこと ある だろ」
B「だから何?〜だと何かいいことあるのか?」

>>232の2つの文のどちらについて話をしているのかの認識がずれていることに気付かない低能どもの会話は滑稽だな
0240デフォルトの名無しさん2016/01/30(土) 06:17:44.28ID:GfziY506
やっぱり馬鹿にC++は無理だな
メモリ確保のnew/deleteは禁止にしてスマポとコンテナーだけ使っとけ
ついでに馬鹿はshared_ptrも使用禁止にしといた方が安全
0241デフォルトの名無しさん2016/01/30(土) 11:02:01.65ID:u8r8Wxi4
> v.reserve(v.size() + 1);
> 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:GfziY506
初回がresize前のcapacityと比較して何が言いたいのかよくわからん例だな

push_backはcapacityに余裕が有るときに再アロケーションしないことは保証されているが
例外を出さない保証は23.3.6.5から読みとれないな
やはり馬鹿にはスマポを強制したほうがいい
0243デフォルトの名無しさん2016/01/30(土) 13:13:55.69ID:VK1fBsAo
>>238
reserve()と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
どうみても>>227はpush_back(というかnew)の直前にしか見えないのに
何を言ってるんだお前は
0245デフォルトの名無しさん2016/01/30(土) 15:00:28.25ID:9j1RlcoP
挿入前に拡張しておけという有難い教えだな。
0246デフォルトの名無しさん2016/01/30(土) 16:17:33.41ID:GfziY506
>>245
挿入前に拡張すると(要素のコンストラクター以外では)例外が出ないという保証はある?
0247デフォルトの名無しさん2016/01/30(土) 16:22:43.98ID:AurOqJPw
>>245 はC++とは違う話題かと。
Cとなら関係あるかも知れないが、プログラミング言語でない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
>>246
規格を読んだ限り保証はされてないね
現実に存在する実装ではreserve済みであれば生ポのpush_backじゃ例外発生しないだろうけどね
そんなことはアテにしちゃいけない
0250デフォルトの名無しさん2016/02/01(月) 01:01:58.63ID:CuJD672c
reserveで例外かわせても、次のnewによるメモリ確保で例外になる可能性はなくならないのだから、
newを一旦別の変数で受けるしかないでしょ

hoge h;

h = new hoge;
vec.push_back(h);

が正解。
0251デフォルトの名無しさん2016/02/01(月) 01:58:17.63ID:fnCrDph6
いやいやwもういいからスマポをmake_uniqueとかmake_sharedで使っておけ
バカはnewを書くな!
0252デフォルトの名無しさん2016/02/01(月) 02:09:31.02ID:CuJD672c
>>251
あんたバカバカ言ってるけどnewを使うかmake_sharedを使うかはこの問題の本質じゃないから。
馬鹿じゃないならわかるよね?
0253デフォルトの名無しさん2016/02/01(月) 02:22:38.94ID:dRJvSEmL
どうなんだろうね
vec.push_back( new t() )
の場合、newで例外が発生したらpush_backは実行しないんだから関係ないと思うんだが
push_back呼ぶ前の、スタックに引数を積む段階で例外が発生するわけだから
push_backは呼ばれもしないし、全く関係ないと思うんだが
0254デフォルトの名無しさん2016/02/01(月) 02:25:49.77ID:fnCrDph6
>>252
あなたが問題の本質を理解してると思えないが?
newを変数で受けたってなにも変わりはしないよ
てか、まずはhoge* hにしてから言ってくれない?
0255デフォルトの名無しさん2016/02/01(月) 05:14:31.96ID:yDMVnQCY
java厨ってnewしたままホウチミンだよね
0256デフォルトの名無しさん2016/02/01(月) 06:43:17.15ID:JTo/Q0C3
>>250や>>253のような
C++の教科書にある間違ったコードのテンプレのような糞コードを真顔で言い出す低能を見ると
やはり馬鹿にはスマポとしか言いようがない
0257デフォルトの名無しさん2016/02/01(月) 17:11:12.73ID:Ev74Df4F
そのjava厨が何を指すのか曖昧だが
Javaでは普通、ネイティブリソースはRAIIで開放するぞ
0258デフォルトの名無しさん2016/02/01(月) 17:14:07.57ID:/UrjTotH
ジャバってデストラクタみたいなの追加さらた?
0259デフォルトの名無しさん2016/02/01(月) 17:59:52.82ID:fnCrDph6
JavaでRAIIとかもうわけがわかんねーな異世界に飛ばされたような感覚だよ
0260デフォルトの名無しさん2016/02/01(月) 18:03:33.95ID:JTo/Q0C3
確かにJavaのRAIIはCloseableとAutoCloseableの違いを理解してないと正しく使いこなせないからな
>>259のオツムがフットーしてしまうのも致し方ない
0261デフォルトの名無しさん2016/02/01(月) 19:47:56.26ID:FCPkKuCG
C++に移ってきたjava厨だよ
newしたままdeleteしねぇ糞ソース大量生成しやがる
0262デフォルトの名無しさん2016/02/01(月) 20:09:02.04ID:qjT3Q9+K
>>261
Java厨は犬派で、C++厨は猫派だからな
newと鳴いたら、deleteるからな
0263デフォルトの名無しさん2016/02/01(月) 20:24:37.67ID:ZBzDFClp
>>262
こういう喩え話って、短い文章中に多くの情報が込められてるものだが。

無粋を承知でお願いします。解説してください。
0264デフォルトの名無しさん2016/02/01(月) 20:42:15.43ID:aUqGS129
>>261
Java 厨に生ポなんて使わせるお前が狂ってる
0265デフォルトの名無しさん2016/02/01(月) 20:46:33.11ID:qjT3Q9+K
>>263
深い意味は無いよ
C/C++やるときはnewしたらdeleteせよ!って鉄則でしょ
ニャー(new)と鳴いたら、必ずデレてる(deleteる)からC++厨は猫派
単なるダジャレだよw
0266デフォルトの名無しさん2016/02/01(月) 20:51:56.51ID:JTo/Q0C3
>newしたらdeleteせよ!って鉄則でしょ

低能のお前にはわからないかも知れないが
そんなことはない
0267デフォルトの名無しさん2016/02/01(月) 21:00:17.78ID:fOHJkiXU
猫は飯くれと撫でろしか言わない
自分が人間より上だと思ってるのでデレることはない
0268デフォルトの名無しさん2016/02/01(月) 21:32:50.64ID:JTo/Q0C3
>>264
ジャバ厨とレッテルを貼るのではなく、たまたまソイツが低能だからということに気付くべき
Javaでもリソース開放は行うし、C++スレにも>>250,>>252,>>253のようなメモリも開放できない奴もいる
0269デフォルトの名無しさん2016/02/01(月) 21:42:26.29ID:BsHDgmsO
生ポってどんな場面で使うの?
0270デフォルトの名無しさん2016/02/01(月) 22:07:54.53ID:wHu9vKIt
>>268
低脳な Java 使いだから Java 厨ってラベル貼られてることに気づくべき
0271デフォルトの名無しさん2016/02/01(月) 22:57:12.27ID:47CQ9v48
>>269
ツリー構造で子が親へ参照を持つときに使ったことがあるな
相互参照するけど、親の寿命管理が必要が無いのでshared/weak_ptrが不要なケース
↓こんな感じ
class tree_view
{
tree_view *parent;
vector<unique_ptr<tree_view>> children;
};
0272デフォルトの名無しさん2016/02/01(月) 23:10:37.79ID:BsHDgmsO
>>271
deleteの出番なしか
0273デフォルトの名無しさん2016/02/01(月) 23:55:10.43ID:CuJD672c
>>268
だったら模範解答貼ってみせろよクズ
0274デフォルトの名無しさん2016/02/02(火) 00:06:14.39ID:ygGmQV70
>>273 >>231
0275デフォルトの名無しさん2016/02/02(火) 00:14:57.63ID:oBfAWjKR
>>271
子を作り管理するのは親ですか?
0276デフォルトの名無しさん2016/02/02(火) 00:50:11.96ID:AUeQZlYi
生ポ渡しするなら生成するのは普通は親でも子でもなくファクトリだと思う
0277デフォルトの名無しさん2016/02/02(火) 00:59:22.35ID:AUeQZlYi
生ポ渡しってただただ生ポ渡すってだけの意味な
こう書いとかないと馬鹿には使えないが口癖のボットに絡まれそうだし一応書いとくわ
0278デフォルトの名無しさん2016/02/02(火) 01:25:45.50ID:x5amnXbs
>>260
へえJavaにもRAIIの概念なんてあったんだ
Javaな現場になんてもう何年も関わってないんで知らんかったわ
0279デフォルトの名無しさん2016/02/02(火) 01:37:28.22ID:r5dd6eSW
沖林正紀の悲劇を繰り返すな
0280デフォルトの名無しさん2016/02/02(火) 03:58:43.22ID:uTTEQY4N
罵倒してるやつの態度は悪いけど
例だろうとポインタ間違えた上に
今時newしてvectorにpush_backしちゃうようなコード書いて
その上逆ギレしちゃう奴は正直ダメだと思う
0281デフォルトの名無しさん2016/02/02(火) 06:45:21.02ID:5quLb8ti
質問です。
http://ideone.com/QRZXDk
上の21行目の再解釈キャストで型変換してるところってVCでは意図したとおりに動いたのですが、
これって他の環境でも大丈夫ですか?
0282デフォルトの名無しさん2016/02/02(火) 07:52:12.29ID:Vw/b/5l0
配列a[10]で&a==&a[0]となる理由がわかりません。
おしえてください。
&a[0]はaの要素の1番目の番地で&aはaの1番目の要素を
指し示すアドレスのアドレスの気がするからです。
0283デフォルトの名無しさん2016/02/02(火) 07:59:56.34ID:N9T32bdW
アドレスのアドレスなんてものは無いということに気がつけばまぁそんなもんかと理解できるかと
(ポインタ変数のアドレスならある)
0284デフォルトの名無しさん2016/02/02(火) 09:42:40.95ID:LvBWX7cX
例外機能をoffにした場合
std::vector<int> v(???);
でメモリの確保に失敗した場合の動作はどうなりますか
0285デフォルトの名無しさん2016/02/02(火) 11:14:27.48ID:NoB4axe7
"自動車"クラスを"人間"クラスが操作するとします。

"自動車"クラスが提供する個々の機能(例えばアクセルやブレーキ)は、
サブクラスが提供(例えばアクセルはエンジンクラスに定義)して、
"自動車"クラスは特に関与しないものとします。

この前提において"自動車"クラスを定義する場合、"自動車"クラスは
サブクラスを継承するかたちで定義したほうが良いでしょうか?
それとも、自動車クラスが個々のサブクラスのインスタンスを保持して
メソッドをラップしたほうが良いでしょうか?
0286デフォルトの名無しさん2016/02/02(火) 11:22:39.18ID:ygGmQV70
>>281
継承を確信できるところでのダウンキャストは 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:MIlHcyxr
人とエンジンは特性上車とは異質であるが為継承ではなくラップした方が融通性能高いことは明白である
0288デフォルトの名無しさん2016/02/02(火) 11:23:10.07ID:ygGmQV70
>>282
いいかげんな教材には a が「配列先頭要素へのポインタである」などと
書いてあるかもしれないが、実際には「配列」であり一部の例外を除いて
「配列先頭要素へのポインタに暗黙変換される」ということになっている。
& 演算子は例外のひとつで、 &a で配列そのものへのポインタが得られる。
4 [conv] p8
0289デフォルトの名無しさん2016/02/02(火) 11:23:22.64ID:ygGmQV70
>>284
非標準の動作なので、まずコンパイラのマニュアルを調べる。
書いてなければ、どうせ移植性は期待できないので実験でもいいかもしれない。
0290デフォルトの名無しさん2016/02/02(火) 11:24:45.55ID:ygGmQV70
>>285
https://www.google.co.jp/search?q=is-a+has-a
0291デフォルトの名無しさん2016/02/02(火) 11:30:10.28ID:NTv/QStd
>>285
当然後者。
現実の関係を模倣するのが普通。

一点、ラップってのをどういう意図で使っているのかが気になる。
個々の部品を組み合わせて、車としての機能を提供すると考えてね。
部品の機能をスルーするだけのラッパーはあまり出ないはず。
02922852016/02/02(火) 11:53:42.81ID:NoB4axe7
皆さん、回答ありがとうございました。

継承と包含の関係を理解してませんでした。
ちなみに”サブクラス”という言葉の使い方も誤解してたみたいです(^^;

>>291
>ラップってのをどういう意図で使っている

部品の機能をスルーするだけのラッパーという意味でした (^^;

その辺も含めてもう少し設計を見直したいと思います。
0293デフォルトの名無しさん2016/02/02(火) 13:09:09.90ID:ZM61xwKS
未だbetter Cより進んだ使い方ができない
0294デフォルトの名無しさん2016/02/02(火) 13:26:24.18ID:7f7wf/mW
>>284
俺の環境だと、色々省略すれば
std::vector : protected std::_Vector_base {
vector(size_type __n, const allocator_type& __a = allocator_type()) : _Vector_base(__n, __a) { _M_default_initialize(__n); }
};
std::_Vector_base {
_Vector_base(size_t __n, const allocator_type& __a) { _M_create_storage(__n); }
};
となって、最終的に__gnu_cxx::__alloc_traits<_Alloc>::rebind<_Tp>::other::allocate() defined at ext/new_allocator.hが呼び出されて
pointer allocate(size_type __n, const void* = 0) {
if (__n > this->max_size()) std::__throw_bad_alloc();
return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
}
が走る。つまり、俺の環境だと、std::vector<int> v(100);すると::operator new(std::size_t)が呼び出されて、例外機構を殺して確保も失敗するなら投げられたbad_alloc例外を処理できずにコケる。
これを書き換えてoperator new(__n * sizeof(_Tp), std::nothrow);とするならallocateはメモリを確保できない時にnullptrを返す。すると次に_M_default_initializeが走って、
最終的にplacement newが走って、thisをデレファレンスした瞬間にセグメンテーションフォールトでコケる。

要するに、例外が発生して安全に停止する前提でライブラリが組まれてるから、例外機能をオフにしたら不安定な動作になる。
例外機能をオフにしようが何しようがthrow自体は出来るので、きちんとcatchしましょうって話に落ち着くかと。
0295デフォルトの名無しさん2016/02/02(火) 14:09:39.60ID:oBfAWjKR
>>288
知らなかった・・・
0296デフォルトの名無しさん2016/02/02(火) 15:14:11.42ID:Ycdr5jOx
まあせいぜい「配列への参照」くらいまでだな。
0297デフォルトの名無しさん2016/02/02(火) 15:35:32.57ID:TPiwOAfk
aが配列だったらint*の引数部分に&aの形でもいいのか
なんか気持ち悪いな
0298デフォルトの名無しさん2016/02/02(火) 15:59:38.85ID:5quLb8ti
>>286
回答ありがとうございます。
protectedで継承しているのでstatic_castは無効なのです。
これは移植性ないとみるべきなんでしょうか。
強引にCスタイルキャストでごまかすべきか・・・。Orz
0299デフォルトの名無しさん2016/02/02(火) 17:00:35.47ID:ucpE/ELv
>>282
細かいことを言うようだけど &a == &a[0] ではないよ。
下の例で、3つのprintf()は同じ値(アドレス)を表示する。
けれども if の部分で有効なのは最初の行だけ。
下の2つのif行の注釈を外すとコンパイルエラーになるはず。
a と &a[0] は等しい。
&a と &a[0] は(値は同じだが)型が違う。型が違うので比較はできない。


#include <cstdio>

int main() {
 int a[] = {1, 2, 3, 4};

 printf("a == %p\n", a);
 printf("&a[0] == %p\n", &a[0]);
 printf("&a == %p\n", &a);

 if (a == &a[0]) printf("Equal\n");
 // if (&a == &a[0]) printf("Equal\n");
 // if (a == &a) printf("Equal\n");

 return 0;
}


>>282 の本題、&a と &a[0] の値が同じになる理由は、
配列の中身がメモリにどう格納されるか、を図で表すと分かりやすいんだが
俺の表現力では無理なんでどなたか頼む。
0300デフォルトの名無しさん2016/02/02(火) 17:01:52.82ID:7f7wf/mW
>>298
castして欲しくないからprotectedにしてるんじゃないの?
0301デフォルトの名無しさん2016/02/02(火) 17:23:10.99ID:5quLb8ti
>>300
いやー、ハンドルみたいな使い方を規定していて、
自分は外部関数で値を変更したいんですけど、ユーザーには触ってほしくない。
という、わがままな欲求です。
そのうちUnified Call Syntaxが入ったら、いろいろやろうと思ってるところです。
0302デフォルトの名無しさん2016/02/02(火) 17:25:43.26ID:MIlHcyxr
>>299
コレ昔VC6でやったら結果が違った
BCC5だとすべて同じ値なのに
0303デフォルトの名無しさん2016/02/02(火) 17:29:56.27ID:MIlHcyxr
vc6だと&aが結局何処差し示しているかわからんかった
03042992016/02/02(火) 17:53:41.97ID:ucpE/ELv
>>302
a[] において &a が配列全体のアドレスを表すってのは
ANSI C で統一された挙動だったね。調べ直しちゃったよ。

C++ でも成立するよな。自信が揺らいできた。
0305デフォルトの名無しさん2016/02/02(火) 17:55:25.15ID:C4M/U0aw
VCは規格準拠してないらしいからね
しかたないね
0306デフォルトの名無しさん2016/02/02(火) 18:30:04.71ID:1NZHqYvt
>>282
たまたまお前の処理系がバイト単位でリニアアドレッシングしてるから。
int a[3]; について
 &a[0] は先頭要素のアドレス
 &a は「a[0] a[1] a[2]」という配列全体のアドレス
だから一致する
0307デフォルトの名無しさん2016/02/02(火) 18:31:29.65ID:QW7JMPO0
>>282
https://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+p0oO
一個目の配列って、日本語変
0309デフォルトの名無しさん2016/02/02(火) 19:17:24.83ID:WSo7+ODL
&&&&****aとか&&&&aとかにしても通ってしまう気がした
0310デフォルトの名無しさん2016/02/02(火) 20:12:44.79ID:po3vtalA
arrayと&array[0]が同じなら
なんでsizeof(array)で正しくサイズが出てくるのか分からん
0311デフォルトの名無しさん2016/02/02(火) 20:35:13.03ID:WkrnCzmR
>>310
> arrayと&array[0]が同じなら
ポインタに変換したら一緒になると言うだけ

> なんでsizeof(array)で正しくサイズが出てくるのか分からん
array 自体のサイズをコンパイラは知ってるから
0312デフォルトの名無しさん2016/02/02(火) 20:54:40.03ID:MIlHcyxr
>>309
&と&&は別物だよ
ちなみに&&は定数も代入できる
0313デフォルトの名無しさん2016/02/02(火) 20:56:18.82ID:RveVHAYz
>>312
馬鹿は去れ
0314デフォルトの名無しさん2016/02/02(火) 21:28:49.56ID:5quLb8ti
array[] -> 配列の型
array[0] ->配列の要素の型

sizeof(array)はdecltype(array)の暗黙に持ってる長さ情報にアクセスしている?
array == &array[0] はアドレス値は同じだが、型自体は違うので持ってる情報は違うもの。前者はT[]。後者は(&T)
暗黙の型変換でぐちゃぐちゃになってるのはお前の頭だ!
であってる?
0315デフォルトの名無しさん2016/02/02(火) 21:29:30.66ID:5quLb8ti
T&か。
0316デフォルトの名無しさん2016/02/02(火) 21:30:29.16ID:MIlHcyxr
int &&a = 5 ;
0317デフォルトの名無しさん2016/02/02(火) 21:33:13.54ID:5quLb8ti
>>316
int&& a=int(5);と等価だっけ?
0318デフォルトの名無しさん2016/02/02(火) 21:34:17.88ID:MIlHcyxr
T&&a=5 ; が a自体の参照で、
T&&a=n ; でnの参照になったりする。自動で。
0319デフォルトの名無しさん2016/02/02(火) 21:34:40.95ID:06fZR6NS
const hoge h;
h.~hoge();
デストラクタはconstついてないのに呼べるのは何故ですか
0320デフォルトの名無しさん2016/02/02(火) 21:53:06.16ID:RveVHAYz
>>302
今確認したが同じアドレスになった
どうしてそう息を吸って吐くように嘘をつくのか

ちなみに&aがどこを指しているかわからないのは
Visual C++ 6.0じゃなくてお前のオツムが原因
0321デフォルトの名無しさん2016/02/02(火) 22:09:17.83ID:MIlHcyxr
>>320
Hotfixいれまくったりすると環境変わるからね
昔のことだからよく覚えてないけど
0322デフォルトの名無しさん2016/02/02(火) 22:20:22.89ID:RveVHAYz
まあこのメッセージを読んでもどこ指してるかわからないようでは致し方ない

int *p = &a;
error C2440: 'initializing' : 'int (*)[4]' から 'int *' に変換することはできません。(新しい動作 ; ヘルプを参照)
0323デフォルトの名無しさん2016/02/02(火) 22:51:04.27ID:MIlHcyxr
>>322
バカでもわかる型の違いですけど
なんでキャストしないのですか?
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
(int*)a:7文字 static_castだと当然もっと長くなる
&a[0]:5文字
0327デフォルトの名無しさん2016/02/02(火) 23:27:30.24ID:MIlHcyxr
何処もヤバくないと思うんだがね
病院逝くのは貴様の方だろ
0328デフォルトの名無しさん2016/02/02(火) 23:31:01.70ID:7f7wf/mW
&*a:3文字
0329デフォルトの名無しさん2016/02/02(火) 23:40:56.45ID:x5amnXbs
&a[0]ならaがstd::vector<int>になっても通用するからそう書けよこのスットコドッコイども
0330デフォルトの名無しさん2016/02/03(水) 00:24:20.72ID:5VKefHqD
c++スレ名物の殴り合いが始まりました!
0331デフォルトの名無しさん2016/02/03(水) 07:32:59.13ID:Gb259GwX
>>329
(int*)aって書ける時点でaは配列かポインタだろ
なんでvectorクラスを仮定してんだよ
0332デフォルトの名無しさん2016/02/03(水) 12:46:03.59ID:6CbCMv4Y
https://ideone.com/wCpVQ1

Javaとは違いC++は基底クラスのインスタンスを派生クラスにダウンキャスト出来てしまうのですが、
これは正しい挙動なのでしょうか。

またオーバーライドした関数が呼べるのは理解できるのですが、
派生クラス独自の関数も呼べてしまうのは腑に落ちません。
0333デフォルトの名無しさん2016/02/03(水) 12:54:30.47ID:AVVts3m8
C++としては正しいが、当然危険なコードなので
もしそうせざるを得ない場合は、設計が間違ってると思うべき
0334デフォルトの名無しさん2016/02/03(水) 12:59:18.19ID:AVVts3m8
正しい挙動の意味にもよるが
どうしても使わざるを得ない場合はdynamic_castを使うべき
0335デフォルトの名無しさん2016/02/03(水) 13:02:03.09ID:EbXG9hpy
>>332
実行時のチェックなしでできてしまうって意味だよね?
プログラマが手動でメモリを割り付けてたりする場合もあるから、下手にチェックされても困るケースがある。
チェックしてほしければvirtual関数持たせた上でdynamic_castしろ。
あと、gが呼べるのは暗黙の引数であるthisに触ってないから、thisがなんであっても問題が表出しないだけ。
0336デフォルトの名無しさん2016/02/03(水) 13:59:40.04ID:XI3wSbIf
>>332
C++言語の仕様上behavior is undefinedなので
どのような結果になっても正しいからな
コンパイラーの出力するコードの都合でたまたまエラー無くspecialが呼び出せてもおかしくはない
0337デフォルトの名無しさん2016/02/03(水) 19:09:23.55ID:V5mcV8ll
私はこの分野にあまり詳しくはないのですが、そうなんですか?
0338デフォルトの名無しさん2016/02/03(水) 19:56:03.11ID:5VKefHqD
>>331
えっ?!
0339デフォルトの名無しさん2016/02/03(水) 23:17:57.39ID:XI3wSbIf
>>337
そうなんです
プログラマーは全知全能でミスをしたら自己責任という思想の言語なので
都合の悪いことはundefined behaviorの扱いにするのがC/C++のお家芸
0340デフォルトの名無しさん2016/02/04(木) 22:34:42.23ID:vx+zStXc
質問ですが、
xがbool型変数だとして、下記は常に成立する?
((x && (int)x == 1) || (!x && (int)x == 0)
03413402016/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:+7Di5n3C
bool型変数のtrueとfalseを反転するコードを教えてください
0343デフォルトの名無しさん2016/02/04(木) 22:52:25.87ID:DD/iUN5m
>>342
!
0344デフォルトの名無しさん2016/02/04(木) 23:50:20.63ID:cr9CcGXP
>>341
今からwww.open-std.orgでN4567をダウンロードして4.7節の第四段落を読むんだ!
0345デフォルトの名無しさん2016/02/05(金) 14:01:35.52ID:HgDpm1WA
このスレはGCCとClangどっち派が多いですか?
0346デフォルトの名無しさん2016/02/05(金) 15:27:33.07ID:BBqIJr5G
g++とclang++な
0347片山博文MZ ◆T6xkBnTXz7B0 2016/02/05(金) 16:01:17.74ID:+wdY+cb5
Win版のClangはバグがあるからまだ普及してないあるよ。
0348デフォルトの名無しさん2016/02/05(金) 16:07:19.66ID:JYiBRtGE
__try __finally が使えるやつじゃないと使う気になれない
0349デフォルトの名無しさん2016/02/05(金) 18:54:43.78ID:HgDpm1WA
clangはまだっすか
GCCオワコンとか豪語してたのはなんだったんだ
0350デフォルトの名無しさん2016/02/05(金) 19:30:15.73ID:VxMqMA9Y
iccでしょ
0351デフォルトの名無しさん2016/02/05(金) 20:08:04.06ID:JYiBRtGE
いい加減、finally 標準化してほしい
0352デフォルトの名無しさん2016/02/05(金) 20:16:50.99ID:HgDpm1WA
そういやboost使ってるとGCCは警告出すのにclangは出さなかったりするなぁ 

>>350
昔はアカデミック目的ならタダだったらしいね
0353デフォルトの名無しさん2016/02/05(金) 20:39:31.37ID:j4SE5TPh
STLで、 array と vector とで、より基本的なのはどっち?
0354デフォルトの名無しさん2016/02/05(金) 20:42:32.39ID:x6bpCF93
vectorパイセン
0355デフォルトの名無しさん2016/02/05(金) 20:47:18.11ID:8VG1Xbz/
今は学振の研究費で買う時代
0356デフォルトの名無しさん2016/02/05(金) 20:54:16.61ID:0mavO284
>>353
STLにはarrayなんてありません
0357デフォルトの名無しさん2016/02/05(金) 20:55:35.17ID:Da4oU4sD
arrayはconstexpr対応になるんだっけ?
0358デフォルトの名無しさん2016/02/05(金) 23:59:20.96ID:h93Uutag
uBlasってどんな人が使うの?
0359デフォルトの名無しさん2016/02/06(土) 00:13:51.81ID:UqtC6Emj
行列とかだっけ?解析関係?
0360デフォルトの名無しさん2016/02/06(土) 00:15:16.29ID:cWTD7JVS
早くはないんでしょ
あくまで実装例って位置付けで
0361デフォルトの名無しさん2016/02/06(土) 00:23:29.24ID:EywJMRGG
じゃあblasに興味ある奴が使うんだろ
0362デフォルトの名無しさん2016/02/06(土) 11:43:48.82ID:M1Vkc4iO
>>357
お前まだconstexpr対応してないの?
はよ専用ブラウザ入れろ
0363デフォルトの名無しさん2016/02/06(土) 17:55:48.52ID:DtUiRvEm
C++は見限ったな。 おれはCに移住したが楽園だわ。 
0364デフォルトの名無しさん2016/02/06(土) 18:07:24.47ID:gyUZgEHU
>>363
さようなら、楽園の住人
0365デフォルトの名無しさん2016/02/06(土) 18:31:40.60ID:OQzrG2km
Cにメンバ関数や簡易的なオブジェクト指向が取り入れられるようになったら
C++の存在意義ってなくなるよな。

ここ数年のCはC++の成果を貪欲に取り入れる傾向もあるし、
そのうちC++からCへの回帰が始まるんじゃないかって気がしてる。
0366デフォルトの名無しさん2016/02/06(土) 18:36:09.47ID:DtUiRvEm
いや、もうなってる。 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。 構造体の中に構造体を持たせてユニオンすれば継承だしな。 パブリックとかはパイソンみたいにすればいいし。
0367デフォルトの名無しさん2016/02/06(土) 18:47:01.63ID:s3egBiWX
そしてまたc++が生まれ…
0368デフォルトの名無しさん2016/02/06(土) 18:52:28.27ID:ewLa/pEP
C++ が理解できなかったんだな
爺にはよくあることだから悲観しなくていい
楽園で楽しんでくれ
0369デフォルトの名無しさん2016/02/06(土) 19:01:46.31ID:0Vjd8v8v
>>366
> 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。
それ継承の仕組みだし
> 構造体の中に構造体を持たせてユニオンすれば継承だしな。
意味不明だし
まあCの楽園で成仏しとけ
0370デフォルトの名無しさん2016/02/06(土) 19:06:52.10ID:1ZsFckKc
わざわざここに書き込みに来た理由を考えるに、たぶん触れないでおいたほうがいいと思う。
0371デフォルトの名無しさん2016/02/06(土) 19:09:17.71ID:/1/YZwYl
>>354
ありがとう
vector先輩についていくわ
0372デフォルトの名無しさん2016/02/06(土) 19:23:16.72ID:lxi6Zpfn
簡単なドライバの本でも読めばいいのに
0373デフォルトの名無しさん2016/02/06(土) 20:05:33.75ID:ijtrMwoE
>>369
>> 構造体に関数のポインターを持たせてマクロ作ればメンバー関数だし。
>それ継承の仕組みだし
仮想関数の素朴な実装だろ;
(正しくはvtblを作るべきだが、

>> 構造体の中に構造体を持たせてユニオンすれば継承だしな。
>意味不明だし
「ユニオン」の誤用があるようだが
入れ子の構造体は継承の素朴な実装に他ならないだろ;
0374デフォルトの名無しさん2016/02/06(土) 20:10:44.00ID:ijtrMwoE
つまり、
struct Foo {
 int m_a, m_b;
};
struct Bar {
 struct Foo m_base;
 int m_x, m_y;
};
としとけば、
 void print_foo(struct Foo* p) { printf("a=%d, b=%d\n", p->m_a, p->m_b); }
に対して、
 struct Bar b;
 print_foo((struct Foo*)&b);
とできる、
これが(virtualでない)継承の真実の姿、
0375デフォルトの名無しさん2016/02/06(土) 20:12:28.12ID:bscwrwNU
C至高信者はどっかほかのところで好きなだけC++をディスってろ
まずはスレ違いだってことを認識できるまでには成長することだな
0376デフォルトの名無しさん2016/02/06(土) 20:16:37.46ID:zK6xYjd8
Cの思想に反する「デストラクター」が使えない以上
あまり意味があるとは思えない
0377デフォルトの名無しさん2016/02/06(土) 20:22:56.44ID:kD783RuO
>>365
XVIewのAPIって知っている?
0378デフォルトの名無しさん2016/02/06(土) 20:32:27.60ID:K1T12T5X
C至高信者は一生構造体をmemsetし続けるに100ペソ
0379デフォルトの名無しさん2016/02/06(土) 20:36:18.00ID:DtUiRvEm
>>374
structをm$独自の拡張を使っていることはいいとして基底クラスの中身をユニオンしておくんだよ。そうすると.で中身をとりだせるようになる。

{}で0になることもしらないのか?
0380デフォルトの名無しさん2016/02/06(土) 20:49:45.09ID:ijtrMwoE
>>379
>>374のstructのどこにMS拡張が…?

>>379
>>{}で0になることもしらないのか?
C言語でおk
0381デフォルトの名無しさん2016/02/06(土) 20:57:45.31ID:ijtrMwoE
>>379
あらかじめ逝っておくが、>>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
http://ideone.com/USd3cx
「3 == 3」になるっていう話をしているんじゃないのか?
0383デフォルトの名無しさん2016/02/06(土) 21:27:52.21ID:ewLa/pEP
何を言い争ってるのかさっぱりわからんが、こいつらに C++ は無理なんだろうな
って思う
0384デフォルトの名無しさん2016/02/06(土) 21:29:53.37ID:DtUiRvEm
今回だけは特別に教えることにするよ。 あとはもう何も教えない。
struct 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:K1T12T5X
C至高信者は自らの人生をもmemsetし続けるに1兆ジンバブエドル
0386デフォルトの名無しさん2016/02/06(土) 21:56:39.15ID:kD783RuO
普通 bzeroだろうな
0387デフォルトの名無しさん2016/02/06(土) 21:56:59.40ID:64Pydz+a
->でアクセスするメリットがぜんぜんわからん
楽園の住人にはカプセル化という発想はないのか
0388デフォルトの名無しさん2016/02/06(土) 22:36:08.60ID:ijtrMwoE
>>384
いちおう継承動作はするが、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+Wms0
涙目敗走宣言してるんだからほっといてあげなよ
0390デフォルトの名無しさん2016/02/06(土) 23:23:57.22ID:zK6xYjd8
どうしてこの馬鹿はコンパイルが通るかすら確認してこないのか
0391デフォルトの名無しさん2016/02/06(土) 23:39:17.52ID:K1T12T5X
> Foo m_base ;
この時点でC++
Cオワタw
0392デフォルトの名無しさん2016/02/06(土) 23:43:08.90ID:K1T12T5X
> struct Foo;
Forward でしょコレ?
なにもunionしていない件w
0393デフォルトの名無しさん2016/02/06(土) 23:43:47.41ID:g5TnjOqx
>>384
struct 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:itHaFKCT
良い老害の反面教師であった(-人-)ナムナム
0396デフォルトの名無しさん2016/02/07(日) 00:18:09.92ID:2T9Cjz04
>>393
type qualifierとは何なのか
0397デフォルトの名無しさん2016/02/07(日) 00:20:08.19ID:itHaFKCT
FooというかFool
0398デフォルトの名無しさん2016/02/07(日) 00:36:30.49ID:umEWBWiF
>>396
https://en.wikipedia.org/wiki/Type_qualifier

謎のM$拡張だろ。union {} の後に直接intが続いてる。
予約語なので変数名ではあり得ない(intの後にカンマもないし)から、intをtype qualifierとして拡張しているに違いない。
0399デフォルトの名無しさん2016/02/07(日) 00:50:27.56ID:2T9Cjz04
よくわからんがVisual C++の独自仕様とCにはtype qualifierなるものが存在すると見た
勉強になった
0400デフォルトの名無しさん2016/02/07(日) 00:50:42.57ID:O4F8gqhm
Cの話なんか誰も聞いてないし聞く気もない
わかったらさっさと帰れ
0401デフォルトの名無しさん2016/02/07(日) 00:52:59.97ID:umEWBWiF
MSにはそんな拡張ないから、ぱちもんのM$(多分中国)だろ
0402デフォルトの名無しさん2016/02/07(日) 01:24:34.33ID:itHaFKCT
学習しないまま老害になった結果(( ;゚Д゚))
0403デフォルトの名無しさん2016/02/07(日) 07:42:43.72ID:ywTW8z18
Cすら怪しいC使いって…
0404デフォルトの名無しさん2016/02/07(日) 08:19:23.63ID:H1plH6un
http://ideone.com/eM34eU
普通にできるのだが。 M$の拡張のスイッチはいってなくてちょっと変だが。
0405デフォルトの名無しさん2016/02/07(日) 08:30:57.45ID:2T9Cjz04
このウンコード、もはや11行目にFoo m_baseを書く意味がわからない
0406デフォルトの名無しさん2016/02/07(日) 08:58:16.66ID:2T9Cjz04
>>404
struct base {int x,y; };
struct derived {int x,y; int a,b;};

この方が良くないか?
まあセミコロンが抜けたのを揚げ足とってtype qualifierがどうとか意味不明なことを連呼する低能といい勝負だな
0407デフォルトの名無しさん2016/02/07(日) 09:20:54.21ID:ihWrHU4l
いま

Javaとc言語 勉強してますが c++は
かなり違いますか??
0408デフォルトの名無しさん2016/02/07(日) 09:24:14.26ID:H1plH6un
JavaとC++は同じ
0409デフォルトの名無しさん2016/02/07(日) 09:48:45.37ID:YehISXuU
>>404
何をしたいコードなのかさっぱり理解できないのは俺だけか…
0410デフォルトの名無しさん2016/02/07(日) 09:57:59.57ID:HPtrUBPy
継承の話なんだから、もともとこれがしたかったんだろ。

Foo 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
>>409
話の発端を辿れば>>366,379にはすぐたどり着くだろう
この2つのレスを読んだ上でわからないなら病院に行くというのも良いだろう
0412デフォルトの名無しさん2016/02/07(日) 10:44:18.18ID:umEWBWiF
>>404
>今回だけは特別に教えることにするよ。 あとはもう何も教えない。

見苦しいぞ、チンカス
前言ひるがえして教えるなら、intの前にセミコロン不要なM$拡張とやらを解説しろよ。
0413デフォルトの名無しさん2016/02/07(日) 11:17:57.53ID:YehISXuU
>>410
それならまだ理解できるんだが
>>404 は全く意味不明 w
0414デフォルトの名無しさん2016/02/07(日) 11:21:51.54ID:wnPOo6ul
>>404
良かったなお前、なんかもう少しで新しい伝説になれそうだよ(´・ω・`)
0415デフォルトの名無しさん2016/02/07(日) 12:41:33.79ID:jZhj8x29
C++を使うんならクラスのインスタンスがどういう風にメモリ上にマップされるのか意識した方が良いのでは…
さもないと
他人様が書いた多重継承を使ったコードに遭遇して死ぬか、
多重継承の危険性を認識できないまま使って死か、
しかし抽象クラスの多重継承は安全で便利なんだ、ということを知らないまま死ぬ
とかいろいろ…
0416デフォルトの名無しさん2016/02/07(日) 12:48:25.44ID:ywTW8z18
>>404のような小学生の屁理屈みたいなコードを
平気で表に出せるその神経はすごいと思う
0417デフォルトの名無しさん2016/02/07(日) 12:51:22.52ID:ywTW8z18
>>408
ヒエッ…
0418デフォルトの名無しさん2016/02/07(日) 13:01:53.78ID:lDWgMel+
>>416
凄いというより、俺はもっと率直に怖いわw
こいつに関わったら糞まみれになる!っていう危険を感じるわ
0419デフォルトの名無しさん2016/02/07(日) 13:11:08.84ID:ywTW8z18
>>418
てっきり顔真っ赤にして書いたのかと思って油断してたんだ
こりゃー本物ですわ…
0420デフォルトの名無しさん2016/02/07(日) 14:58:13.14ID:GW5WZ8T2
どちらかというと痛い自演が続いている>>419が哀れ
0421デフォルトの名無しさん2016/02/07(日) 15:21:06.58ID:ywTW8z18
…えっ?
0422デフォルトの名無しさん2016/02/07(日) 15:36:34.21ID:K4RZyWmM
>>407
C++を進化させたのがJavaだよ
基本的な考えはいっしょ
0423デフォルトの名無しさん2016/02/07(日) 15:44:07.75ID:ywTW8z18
メモリの管理方法からクラスローダの有無からテンプレートまで
仕組みも定石も書き方もかなり違うっしょ
駄目だよ嘘教えちゃ…
0424デフォルトの名無しさん2016/02/07(日) 15:46:01.35ID:K4RZyWmM
>>423
クラスローダとか枝葉だし
テンプレートはJavaも取り入れてるし
メモリ管理はそれこそ正統進化でしょ
0425デフォルトの名無しさん2016/02/07(日) 16:03:53.98ID:ywTW8z18
>>424
本気で言うてんの?
クラスローダはリフレクションの動作の要
ジェネリクスとテンプレートは別物だし
C++のメモリ管理なんて根本的な考え方が違う
0426デフォルトの名無しさん2016/02/07(日) 16:13:48.60ID:K4RZyWmM
考え方が一緒だなんて言ってないよ
進化すれば一緒にはならないのは当然
0427デフォルトの名無しさん2016/02/07(日) 16:15:31.53ID:YehISXuU
アホでも使える様にしたのを進化と言う人もいるから別に進化でもいいけど、細いことやろうとすると面倒過ぎ ⇒ Java
必須の要件でないなら C++ か C# 辺りを使う
0428デフォルトの名無しさん2016/02/07(日) 16:18:49.64ID:ywTW8z18
>>426
あんさん「基本的な考えはいっしょ」って思いっきり言うとりますがな…
0429デフォルトの名無しさん2016/02/07(日) 16:20:12.15ID:1Xy48Qqn
テンプレートとJavaとか.Netのジェネリクスが同じという人は、だいたいテンプレートの理解をしてない人が多いね
テンプレートでジェネリクスの機能を実現できるとは言えるけど、全くもって同じではない
0430デフォルトの名無しさん2016/02/07(日) 16:20:56.37ID:TXHOUVTA
JavaがC++の進化?笑わせるなよw
C++のインタプリタ作ろうとして出来損ないになったのがJavaだろ
0431デフォルトの名無しさん2016/02/07(日) 16:21:03.56ID:9JmoCpHp
テンプレートとジェネリクスをいっしょにしちゃう時点で
>>424はJavaもC++も両方ニワカなんだなってわかる
0432デフォルトの名無しさん2016/02/07(日) 16:31:34.60ID:CZPnBtq1
C++は文字扱いやすいから好き
0433デフォルトの名無しさん2016/02/07(日) 17:35:59.24ID:2T9Cjz04
テンプレートとジェネリクスは別と強く主張している人は
目的と手段が入れ替わっているのではないかと危惧してしまう
0434デフォルトの名無しさん2016/02/07(日) 17:41:03.74ID:vcfxOeKG
少なくともc++のtemplate側から見たjavaのジェネリクスは出来損ないの玩具未満
0435デフォルトの名無しさん2016/02/07(日) 17:44:02.11ID:H1plH6un
マクロがあればジェネリックスもテンプレートもいらないだろ。 あとvoid*もあれば何もいらない最高。
0436デフォルトの名無しさん2016/02/07(日) 17:49:08.88ID:fu54F6yL
マクロも void * も型を無視するからね‥せっかくの型情報を無駄にしたくないよね
0437デフォルトの名無しさん2016/02/07(日) 17:51:01.99ID:jvYVRZ1r
マクロアセンブラ最高
0438デフォルトの名無しさん2016/02/07(日) 17:53:35.11ID:1Xy48Qqn
>>435
型安全という言葉くらい勉強してくれ
0439デフォルトの名無しさん2016/02/07(日) 17:58:01.45ID:itHaFKCT
>>408
おいやめろ、newしたままホウチミンが沸くだろ
0440デフォルトの名無しさん2016/02/07(日) 20:33:27.60ID:ywTW8z18
>>433
型消去しまくりで、ユルユルのジェネリクスと
インスタンス化しまくりで、カチカチのテンプレートが同じだと思ってるのは
C++をまともに使ったことが無いのにイメージで語る人間ぐらいだろ
0441デフォルトの名無しさん2016/02/07(日) 20:38:31.87ID:oOsMibJK
newしたままホーチミンってunique_ptr使わんの?
0442デフォルトの名無しさん2016/02/07(日) 20:40:02.81ID:DCLFR8bK
java 使いだけど謝っとく。ジェネリクスとテンプレートは全く違う
実際こんな意識のやつしかいない
0443デフォルトの名無しさん2016/02/07(日) 20:40:32.15ID:ywTW8z18
>>433
よく読んだらダークサイドに落ちるテンプレート使いを憂う紳士だったか…
すまない早とちりだった
0444デフォルトの名無しさん2016/02/07(日) 20:42:36.82ID:9JmoCpHp
学生のころハゲの本読んだらやたらとテンプレートを自慢してて
当時は何言ってんだこのオッサンと思ってたが
今となってはC++の本質はむしろテンプレートにこそあるとすら思うわ
0445デフォルトの名無しさん2016/02/07(日) 20:46:00.38ID:jZhj8x29
(ここまでテンプレ)
0446デフォルトの名無しさん2016/02/07(日) 22:16:11.87ID:2T9Cjz04
『newしたままホウチミン』
そこはかとなく昭和臭の漂う言語センスだな
0447デフォルトの名無しさん2016/02/07(日) 23:45:46.38ID:BRQ6zdFU
>>446
「昭和的センスの光る秀逸な言語センス」と書き込むのが優秀な工作員。
0448デフォルトの名無しさん2016/02/08(月) 08:10:58.75ID:FLpG0nuf
v.reserve(v.size() + 1);
ってModern C++ Designでも使われてるな。4.5章。
アレクサンドレスクさん大丈夫か?
0449デフォルトの名無しさん2016/02/08(月) 08:26:46.05ID:1arqmFZS
std::vector::reserveはあらかじめ最大サイズが分かってる場合のみ使うべきで
push_backの前にその都度やってはいけない
std::vectorの実装によっては見過ごせない速度低下を招くおそれがある
0450デフォルトの名無しさん2016/02/08(月) 08:57:30.60ID:M0j0fnEJ
>>448
この人のことかい?
https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu
0451デフォルトの名無しさん2016/02/08(月) 14:33:59.40ID:sy4WOp1q
だからってdequeがそんなに速いわけでもない
0452デフォルトの名無しさん2016/02/08(月) 18:36:26.79ID:hQVN/n6H
性能は処理系依存・実測が基本だよ。
実装によっちゃ遅いから一律ダメなんて馬鹿げてる。
問題は例外安全の保証が無いのに使っちゃうようなコード。
0453デフォルトの名無しさん2016/02/08(月) 20:59:27.12ID:91HGMZTw
>>452
そうは言っても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:1arqmFZS
>>452
v.push_backの前にその都度v.reserve(v.size()+1)するのは完全に馬鹿げてると思うが?
0457デフォルトの名無しさん2016/02/08(月) 21:31:38.79ID:jK3N5mCN
メモリーアローケーターを作ってるのに必要以上にメモリーを割り当てる馬鹿はいないでしょ。
0458デフォルトの名無しさん2016/02/08(月) 21:43:10.93ID:0e7wp70j
>>455
野郎
・
なんてことを思いつくんだ・・・
こいつは・・・・・やばい・・・・・ぜ
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
>>456
状況次第じゃね?
0463デフォルトの名無しさん2016/02/08(月) 22:29:44.19ID:ccWKvjol
>>461
そういうソフトが蔓延ると原因把握するの面倒だからちゃんとバグ報告して欲しい。
0464デフォルトの名無しさん2016/02/08(月) 23:50:58.34ID:mRHfF9cR
素人なんですが

c言語  

c++

java

などなどそれぞれ主にどんな分野で使われていますか?

プログラム言語がありすぎてワケわかりません
0465デフォルトの名無しさん2016/02/09(火) 04:06:59.53ID:JiEqdJhY
>>464
C:OSの中核、組み込み
C++:OSガワ、ミドルウェア、ブラウザ、マルチメディア、言語処理系(Java含む)など
Java:一般・業務・Webアプリケーション(大規模含む)

シェアはJava > C ≒ C++
C/C++合わせてJavaと同程度
0466デフォルトの名無しさん2016/02/09(火) 04:09:07.38ID:JiEqdJhY
>>465
これのC++に書いた分野はCも使われる事が多いが、
主分野と言われたので省いた
0467デフォルトの名無しさん2016/02/09(火) 04:30:48.06ID:1CYnHFpe
>>461
世の中にある商用のシミュレーションソフトとやらのほとんどは
おまいらが見たら噴飯物かあるいは卒倒するレベルのコードだと思う
とくに国産ソフトは
0468デフォルトの名無しさん2016/02/09(火) 06:31:50.30ID:7j9PU2Vm
>>245
↑は谷岡のノリで言った冗談だろ
0469デフォルトの名無しさん2016/02/09(火) 07:10:33.24ID:jOU/WMb9
むしろ商用ソフトで461のようにならないものが珍しい
0470デフォルトの名無しさん2016/02/09(火) 07:58:11.21ID:sh9Vl//D
>>469
設定ミスでフォルトするのはどうかと思うが、メモリ一不足の対応は難しいな
0471デフォルトの名無しさん2016/02/09(火) 08:07:47.87ID:GGDlYrLi
Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0472デフォルトの名無しさん2016/02/09(火) 08:27:57.61ID:6SIhh/2K
メモリ不足でセグフォはダメだろ
0473デフォルトの名無しさん2016/02/09(火) 08:38:04.20ID:CN4QadC3
開始早々に落ちてくれるなら強制終了も受け入れよう。
相当な時間をかけた挙句に「メモリが不足しています」はいかんよ。
0474デフォルトの名無しさん2016/02/09(火) 11:48:56.15ID:RvW28ssM
セグフォになった時点でエラーを投げられないからセグフォはしょうがない。
0475デフォルトの名無しさん2016/02/09(火) 12:52:53.74ID:sh9Vl//D
>>471
> システム監視ソフト
そう言う奴は起動してしまえば新規にメモリー確保したりしないから API 回りとかに気を配ればいい
普通のアプリケーンョンと同列に語っちゃダメだろ
0476デフォルトの名無しさん2016/02/09(火) 17:42:12.67ID:GGDlYrLi
>>475
システム監視ソフトだからといってメモリ確保しなくていいわけじゃないです
そのソフトはどのプロセスがいつ起動してどれだけのメモリを使用していつ終了したかを
ログするものでしたがその過程で新たなメモリ確保はどうしても発生します
0477デフォルトの名無しさん2016/02/09(火) 18:11:10.64ID:sh9Vl//D
>>476
で、確保できなかったらどうするんだ?
ログは取れなくても生きてるだけでいいんかよ w
0478デフォルトの名無しさん2016/02/09(火) 18:19:20.93ID:GGDlYrLi
>>477
そう。メモリ確保できない間はどうしようもないので黙っている
システムのメモリ状況が改善したら再びログを出力し始める
最後の最後まで生きていることが最重要なソフト
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
>>481
いざとなったときの余分なメモリ確保は行っていたんだが?
アロケーションが出来なかった場合はそれを解放して自分が動けるようにする
そういう考慮をしてもダメなケースっていうのはあるんだよ
お前ごときにアホ呼ばわりされる筋合いは微塵もないからもう黙ってれ
0483デフォルトの名無しさん2016/02/09(火) 21:20:35.31ID:XI8hNy2k
>>482
> アロケーションが出来なかった場合はそれを解放して自分が動けるようにする
だからアロケーションするなって言ってるのにバカなのか?
0484デフォルトの名無しさん2016/02/09(火) 21:27:20.83ID:IR1D3KHq
そういうプログラムの場合は必要なメモリは起動時に確保しておいて、実行中はそれを解放せず使い回すのが普通じゃないの?
OSのAPIが内部でメモリ確保してみたいなのならそのAPIがメモリ不足でエラーを返す事はあるだろうけど、その場合c++の例外安全とは関係ないような。
わざわざ自前でthrowしていない限り
0485デフォルトの名無しさん2016/02/09(火) 21:29:13.32ID:DH+vdKhf
ほんとそう思うね

> アロケーションが出来なかった場合はそれを解放して自分が動けるようにする

↑と
あらかじめ確保しておいたメモリ内でやりくりするとのと
どちらがスマートかと
0486デフォルトの名無しさん2016/02/09(火) 21:31:23.88ID:lnigE11c
Windowsのメモ帳が保存しようとすると
しょっちゅう「メモリ不足です」と嘘つくのは
何なんだぜ
0487デフォルトの名無しさん2016/02/09(火) 21:34:37.23ID:F3FfwO0D
メモ帳は嘘つきではないのです
間違いをするだけなのです
0488デフォルトの名無しさん2016/02/09(火) 21:45:17.76ID:7NZqnMQp
>>486
(万人に説明できないあるいは説明するのがめんどくさいエラーが発生しました。
ですがその原因が何であるか、例えばメモリ不足であるかどうかは当該ユーザーの
人生には何の関係もありません。そこで、ユーザーの時間を無駄にしないために
適度にもっともらしく、また検証不能であることを十分に示唆するエラーメッセージとして、
われわれが長い経験に基づき選択したのがこの)メモリ不足です
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
某FPSでチートソフトが検出された的なエラーでよく落ちるからエラーレポート送りつけたらVRAM不足だったことあったわ。
何が言いたいかって言うとエラーの内容は誤魔化さずに詳細までちゃんと書け。
0492デフォルトの名無しさん2016/02/09(火) 23:41:41.32ID:6SIhh/2K
free, deleteしてもOSには返却されない事を知らない馬鹿が多すぎる。
0493デフォルトの名無しさん2016/02/09(火) 23:55:10.79ID:GGDlYrLi
>>481
プロセス数の最大値があらかじめ分からないからこういう苦肉の策を取ったんだが
お前もういいよ
>>492
もちろんfreeやdeleteじゃなくOSに確実に返される方法を取ったよボケ
0494デフォルトの名無しさん2016/02/10(水) 00:51:06.86ID:xIPHXOxS
質問です
シェルスクリプトみたいに関数内に気軽に関数を定義して使いたいんですが
こういうときはラムダ式を使えばいいんでしょうか?
ラムダ式って主にソート用関数みたいに数行で終わる簡易な用途で使われる
って聞いたんですが、別に普通の関数と同じ感覚で使っても問題ありませんか?
0495デフォルトの名無しさん2016/02/10(水) 00:56:41.25ID:rEABlirv
別にかまわんよ
0496デフォルトの名無しさん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
>>493
絶対落ちちゃいけない監視ソフト作った奴が最大値を知らないって?
白々しいな
0499デフォルトの名無しさん2016/02/10(水) 02:46:18.58ID:WclI5GwY
ログなんてストレージ領域確保すりゃ十分なのに
何あたかも作ったかのように語るのかねこいつは
システム自体にプロセス最大数がある事すらも知らなそうだし
0500デフォルトの名無しさん2016/02/10(水) 03:19:40.03ID:cNfi8Aot
>>498
ずいぶん詳しいようだから聞くけど、プロセス数の最大値をどうやって取得するんだよ
まあそんな問題ですら無いんだけどね
メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから
お前に「こいつ」呼ばわりされても片腹痛いわ
0501デフォルトの名無しさん2016/02/10(水) 08:59:08.05ID:WclI5GwY
>>500
最大数がメモリとスタックから決まる事すら気づかん時点で終わっとるわな

>メモリが足りない状況ではいろんなAPIがコケるってことが問題なんだから
メモリなど無関係にAPIが動かなければ監視できないわな
正常時まで監視してればいいならログ取るだけでいいからメモリいらんわな
頭が悪いなんてもんじゃないなお前
0502デフォルトの名無しさん2016/02/10(水) 13:20:19.27ID:OnEbfKeK
>>493
> プロセス数の最大値があらかじめ分からないからこういう苦肉の策を取ったんだが

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:BgAJpbAv
プログラムが消費しているメモリ量を取得することってできますか
0504デフォルトの名無しさん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
user32.dll側の責任でPostMessageが失敗する状況は無いんだ。
お前のアプリがヘボでPostMessageを呼び出す前にこけてるだけ。
そんな事もわからない中学生だから妄想って判断したんだよ。
0507デフォルトの名無しさん2016/02/10(水) 14:37:27.03ID:2z9ZUJCV
16000割れでみんなイライラw
まだまだ下げるよ!
0508デフォルトの名無しさん2016/02/10(水) 14:38:27.35ID:CcpqYYAq
何をどうやって確保したら回避できたか言ってご覧
妄想中学生
0509デフォルトの名無しさん2016/02/10(水) 14:58:55.83ID:cNfi8Aot
>>506
PostMessageの戻り値を見たこともないゴミは黙ってろって

妄想中学生はお前だよお前
回避?何のことだね
回避できない状況のことを言ってるんだが
0510デフォルトの名無しさん2016/02/10(水) 16:16:55.13ID:CcpqYYAq
ぷぷぷ「ERROR_NOT_ENOUGH_QUOTA postmessage」で検索すると。
「お前のアプリがヘボ」という結論しか出てこないな。

しかも、根本的になおさずにメッセージキュー拡げて対応とか。中学生プログラマらしいや。
0511デフォルトの名無しさん2016/02/10(水) 16:22:50.22ID:OnEbfKeK
>>503
取得方法はOSによって違うし、メモリーと言っても色々ある
とりあえず Windows なら GetProcessMemoryInfo 辺りでググってみて
0512デフォルトの名無しさん2016/02/10(水) 16:25:20.02ID:WclI5GwY
>>509
つまり何にも対処できてないのに対処したとか大ボラふいてたわけだ
0513デフォルトの名無しさん2016/02/10(水) 17:09:41.86ID:cNfi8Aot
もうお前らいいからw
お前らみたいな低能が作った穀潰しゴミソフトがメモリを食いつぶし続けてる時の
対処法なんて限られてるんだよ己の無能力を自覚してもう黙ってれよ
0514デフォルトの名無しさん2016/02/10(水) 17:37:32.35ID:CcpqYYAq
検索でトップの↓これを筆頭に質問者アホと言われて相手にされてない

http://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
PostMessageが失敗するんだろ
論理が破綻してるぞ
0517デフォルトの名無しさん2016/02/10(水) 18:02:45.61ID:cNfi8Aot
破綻してるのはお前の脳味噌だってことをそろそろ理解しろよ
PostMessageが失敗したってことを認識できればそれなりの対処法はあるが
お前みたいな低能に対処できる根本的な方法はない
0518デフォルトの名無しさん2016/02/10(水) 18:15:32.39ID:OnEbfKeK
>>505
> スキルもないくせにエラソーなことほざくアホどもとは付き合ってられんわ
苦し紛れに出して来たブロスセ数で玉砕しまくったアホに言われてもねえ w

>>513
> 対処法なんて限られてるんだよ
でも具体的にその方法は書けない

妄想ですから〜
ってオチ? w

そもそも >>476 の監視ソフトで PostMessage を使うこと自体がバカっぽい
0519デフォルトの名無しさん2016/02/10(水) 18:35:15.27ID:cNfi8Aot
PostMessage使わないようしにたって同じことだよ
そろそろ自分の愚かさを認識しろよ超絶低能
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:cNfi8Aot
更に笑わせてくれる低能くんが出現したぞw
0523デフォルトの名無しさん2016/02/10(水) 19:04:02.17ID:VhPZ+OLx
許す。好きなだけ笑えばいいぞ。
そのまま笑い死んでくれてもいいぞ。
0524デフォルトの名無しさん2016/02/10(水) 19:06:27.25ID:x/NF9K0j
知識としておきたいから誰かまとめてくれ
0525デフォルトの名無しさん2016/02/10(水) 19:11:44.13ID:sTnZ5Yh7
お互いサンプルコード出して殴り合えよ
0526デフォルトの名無しさん2016/02/10(水) 19:46:51.10ID:b+YmgAEw
>>525
無理でしょ
プロセス数の話ですら俺がググってちょっと具体的なこと書いたら、一切触れなくなったぐらいだし w
コード書けるかどうかも怪しいレベルだと思う
0527デフォルトの名無しさん2016/02/10(水) 19:53:57.44ID:6eyh9AMR
ソフトウェア開発の生産性を阻害する「気軽に聞けない」ことの考察と対策
http://simplearchitect.hatenablog.com/entry/2016/02/10/175238
0528デフォルトの名無しさん2016/02/10(水) 20:20:13.29ID:+sMp0qjD
ずいぶん香ばしい奴みたいだったな
0529デフォルトの名無しさん2016/02/10(水) 22:19:50.30ID:cNfi8Aot
>>526
バーカシネ
>Windows は明示的な上限はないけど、8GB メモリーで 7,000個弱
>実機で確認すればすぐわかる
お前ごときが実機で確認した値なんてなんの意味もないんだよ
上限なんて無くメモリ量で決まる
もっとも、これは最大プロセス数なんてどうでもいい話で
一匹の低能が作ったクソゴミソフトがメモリを食いつぶすすのを発見し
そいつを血祭りにあげようというのが目的だったんだが?
ちなみにそいつはもう死んだ
0530デフォルトの名無しさん2016/02/10(水) 22:27:00.54ID:lc1dGjcs
ここは怖いインターネットですね
0531デフォルトの名無しさん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
>>492
断片化もするしな
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
>>563
はいはい極悪低能プログラマの本音を聞きました
0539デフォルトの名無しさん2016/02/10(水) 22:44:30.04ID:BsX2uww2
というよりよく考えたら、いかにメモリリークし続けるプロセスが居るからと言って
他のプロセスがPostMessage()に失敗するまでメモリ不足になるかっていうと疑問

リークするだけなら(アクセスされていないのだから)まずそいつがディスクに掃き出されるのでは…
0540デフォルトの名無しさん2016/02/10(水) 22:48:42.82ID:EIvsPcYN
>>529
> お前ごときが実機で確認した値なんてなんの意味もないんだよ
ググったって書いてあるのにバカすぎるだろ
https://technet.microsoft.com/ja-jp/windows/mark_04.aspx
自分の為に確認してくれるとかバカに限って自意識過剰なんだから笑えるわ

> もっとも、これは最大プロセス数なんてどうでもいい話で
だから固定で持っとけ
って言う話なのに自分で勝手に難しくして自爆してるだけ

> ちなみにそいつはもう死んだ
相変わらず技術的な話は全くなし w
0541デフォルトの名無しさん2016/02/10(水) 22:48:59.49ID:cNfi8Aot
>>537
それがそれで済む状況ではなかったんだよ
どれかのプロセスが何かの条件によってメモリを食いつぶす行為に走りだす
そのせいで他の善良なプロセスまで巻き添えにする
その為パフォーマンスカウンタの特別版を作る必要があった

もうこの話はいいです。何年も前のいやな思い出だから
0542デフォルトの名無しさん2016/02/10(水) 22:53:15.12ID:cNfi8Aot
>>540
いつまでそれにこだわってるんだよ低能
ググってくれてご苦労様だけど(後学のために頭の片隅には置いておいてやるよ)
最大プロセス数なんて全く関係ない話だって言ってるだろ
0543デフォルトの名無しさん2016/02/10(水) 22:58:22.56ID:WclI5GwY
>>537
ワロタ確かにこれでいいわ

>>541
パフォーマンスカウンタすら失敗する()なら
メモリ関連APIをHookかInjectionして
使用量が一定以上超えたらkillでも良いわけ

そういう一連の馬鹿発言からして
まともにプログラム作ってるとは言い難いな
0544デフォルトの名無しさん2016/02/10(水) 22:59:37.61ID:EIvsPcYN
>>537
まあ普通そうするわな
わざわざ中途半端なツール作ってドヤ顔するのが趣味なんだろ w
0545デフォルトの名無しさん2016/02/10(水) 23:05:47.98ID:cNfi8Aot
ここでエラソーなこと言ってる奴らが実務では使い物にならないゴミどもだってことが
よく分かるエピソードでしたチャンチャン
0546デフォルトの名無しさん2016/02/10(水) 23:20:15.88ID:WclI5GwY
勝利宣言クッソワロタw
お前の言う実務は2chでの妄想活動だろ?
んなもん使い物にならなくていいわw
0547デフォルトの名無しさん2016/02/10(水) 23:21:04.10ID:VhPZ+OLx
コードの一片すら示せない偽装プログラマに言われてもねぇ…
0548デフォルトの名無しさん2016/02/10(水) 23:24:21.16ID:cNfi8Aot
僕ちゃんたちはパフォーマンスモニター知ってるよ(ドヤ)
0549デフォルトの名無しさん2016/02/10(水) 23:28:04.89ID:+sMp0qjD
すっかり玩具だな
0550デフォルトの名無しさん2016/02/10(水) 23:28:29.01ID:EIvsPcYN
パフォーマンスカウンタの特別版作れる僕って凄いでしょ (ドヤ)
0551デフォルトの名無しさん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+OLx
コードの一片も出せない似非エンジニアが喋ってやがるwww
0554デフォルトの名無しさん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
ごめん謝るわw
0557デフォルトの名無しさん2016/02/11(木) 00:02:18.12ID:LEO/MbWa
結局どういう話だったのかまとめてくれ
0558デフォルトの名無しさん2016/02/11(木) 00:09:28.61ID:rWlIZ3EB
>>557
極端なリソース不足に陥った時の対処を知らない低能が
かつての自分の苦労をドヤ顔で自慢したら、
同レベルの低能がアホなレスしてカオスになった
0559デフォルトの名無しさん2016/02/11(木) 00:09:54.31ID:vxNioHuU
PostMessageが低メモリ下でFAILする根拠は何も出せなかった、中学生。
0560デフォルトの名無しさん2016/02/11(木) 00:20:41.21ID:vOJNqTQW
みんな楽しそうだな(´・ω・`)
0561デフォルトの名無しさん2016/02/11(木) 00:42:04.61ID:ZvFHDsOW
>>588
参加したかったなら今から参加しても良いんだぞ
ぜひ有能クンの高度な技術を披露したまえ
0562デフォルトの名無しさん2016/02/11(木) 00:42:45.47ID:ZvFHDsOW
>>558な
0563デフォルトの名無しさん2016/02/11(木) 01:02:36.71ID:xFHLdcla
この手の煽り合いって海外の掲示板でどんくらいあるんですか?
こういう殺伐さと生暖かさが入り混じったスレって、もしかして古今東西2chだけ?
0564デフォルトの名無しさん2016/02/11(木) 04:20:00.07ID:pNz7UH/B
http://ideone.com/Ptd0tn
これなんでエラーになるかご存知の方いませんか。
循環参照だと思うのですが、どう解決するべきか困っています。
普段からあんまり凝ったことしないのでこの規模はほとんどないです。
VCで開発していて、ソース分割しています。

内容は、ヒットアンドブローのホストクライアント型の試験みたいなもんです。
0565デフォルトの名無しさん2016/02/11(木) 04:32:08.20ID:COETO4tD
>>564
エラーの理由はエラーメッセージ書いてあるだろ。

一般的に A, B が循環参照になっているなら A, B をひとつにまとめて C としてしまうか、
あるいは A, B から循環参照を生じさせている部分を新たに C に抽出して A, B ともに C を
参照するようにするか、という解決方法がとれることが多いと思う。
そのコードもたぶんこれでいけるんじゃないの?
0566デフォルトの名無しさん2016/02/11(木) 04:40:01.55ID:pNz7UH/B
>>565
失礼かもですが、もうちょっと詳しくお願いします。
普段やらないことやってるので何が起きてるのか把握していません。
typedefを切り離せってことですか?
0567デフォルトの名無しさん2016/02/11(木) 04:42:30.20ID:COETO4tD
>>566
手取り足取り教えるつもりは無いよ。どうなればいいのかよくわかってないし。
「typedefを切り離せってこと」かもしれないと思うなら、試してみればいいでしょ。
0568デフォルトの名無しさん2016/02/11(木) 04:48:34.82ID:pNz7UH/B
テストを書いたのでコンパイル通してこれからデバッグでした。
うーん。切り離したくないんですよねぇ。

明日考えよ。
0569デフォルトの名無しさん2016/02/11(木) 05:49:59.07ID:4ThVUQw6
なんでメンバ関数の定義をすべてクラス定義の中でやってるの?
ICodeBreakerClientを参照しているメンバ関数を全て
ICodeBreakerClientの定義の下に持っていけば
あっさり解決するような気がするけど。
0570デフォルトの名無しさん2016/02/11(木) 05:57:04.43ID:4ThVUQw6
おっと、持っていくのはメンバ関数の定義ね。
メンバ関数の宣言と定義の違いは分かる?
0571デフォルトの名無しさん2016/02/11(木) 05:58:04.84ID:r+XipyqS
>>599
まだうだうだ言ってるのかw低能くんは暇だねえある意味羨ましいよ
>PostMessageが低メモリ下でFAILする根拠
根拠だと?アホまるだしだな。当然根拠は実験結果だよ
お前試したことないだろ
0572デフォルトの名無しさん2016/02/11(木) 06:12:06.03ID:r+XipyqS
599じゃない>>559だった
0573デフォルトの名無しさん2016/02/11(木) 06:12:25.49ID:pNz7UH/B
>>569-570
回答ありがとうございます。
一応定義と宣言の区別はついてると思います。
原因はワンヘッダーにがーっと書いてるからですかね。
CPPに分けてみるか。
0574デフォルトの名無しさん2016/02/11(木) 06:39:24.85ID:rWlIZ3EB
>>571
お前にヒントをやろう
>>509-510を読め
>>510はリファレンスを読むオツムが無かったので勘違いレスをずっと続けている
0575デフォルトの名無しさん2016/02/11(木) 06:42:16.64ID:vxNioHuU
>>571
>>>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
>>538, >>561, >>571
専ブラ使えよ
フルボッコされた涙目だとアンカーも付けにくいだろ 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
http://www.dotup.org/uploda/www.dotup.org734087.zip
おかげさまでコンパイルも無事通り最初のデバッグができました。
リファレンスにタコなAI突っ込んどいたので誰か遊んでください。
ありがとうございました。
一応ライセンスはMITライセンスでいいです。
自己責任でおながいします!
0580デフォルトの名無しさん2016/02/11(木) 08:35:31.59ID:LEO/MbWa
IDが変わっててよくわからんから君ら昨日と今日のIDを等式で繋いでくれよ
0581デフォルトの名無しさん2016/02/11(木) 08:55:50.21ID:vxNioHuU
ID:r+XipyqSとID:rWlIZ3EBが低能ぶりでそっくりだが、
ID:r+XipyqSはシステムリソースを食い尽くすアホアプリを特定する監視プログラムを作ろうとして
プライベートリソースを食い尽くすアホ**2アプリを作ってしまった無能。
ID:rWlIZ3EBは話題についてこれない低脳。無視して良い。
0582デフォルトの名無しさん2016/02/11(木) 09:20:37.71ID:JNPPvkDO
C++の標準ライブラリの貧弱さは異常
0583デフォルトの名無しさん2016/02/11(木) 09:33:17.55ID:EuRhj+pR
string関連は特に酷いよな
0584デフォルトの名無しさん2016/02/11(木) 09:34:54.74ID:OZhLkZUr
ライブラリ自体が飯のネタになってた時代の言語だからな
0585デフォルトの名無しさん2016/02/11(木) 09:50:04.55ID:pNz7UH/B
>>582
自分に必要なライブラリスクラッチしてると実力つくぞ。
ただ、環境依存系はきついけど。
0586デフォルトの名無しさん2016/02/11(木) 09:57:52.64ID:rWlIZ3EB
ID:lc1dGjcs = ID:rWlIZ3EB

しかし>>576がリファレンス読めない馬鹿ではなく
リファレンスも読もうとしない低能だったとは
0587デフォルトの名無しさん2016/02/11(木) 10:01:08.51ID:ZvFHDsOW
>>580
このアホさ加減から言ってID:rWlIZ3EB=ID:cNfi8Aotだろ
別人装ってるけどなw
0588デフォルトの名無しさん2016/02/11(木) 10:49:54.44ID:vxNioHuU
ID:lc1dGjcs = ID:rWlIZ3EBはアスペっぽいな。放置推奨。
0589r2016/02/11(木) 10:54:32.20ID:ECJX98k8
このスレの住人ってどんな環境使ってるんだ?
なんかWin+VS環境が多い印象なんだが、LinuxやMacでClang使ってる奴はこのスレでは少数派?
0590デフォルトの名無しさん2016/02/11(木) 11:36:47.06ID:unvLhFXs
仕事の話なのかオナニーの話なのか
0591デフォルトの名無しさん2016/02/11(木) 13:29:43.31ID:WJf9jt/h
本人: 仕事の話のつもり
本人以外: またオナッてら
0592デフォルトの名無しさん2016/02/11(木) 13:32:04.04ID:r+XipyqS
>>578
アホすぎて返す言葉もないわ
お前が引用した文はメッセージキューがいっぱいになったときの挙動だろうが
それのどこに低メモリ下の話があるんだよ
ERROR_NOT_ENOUGH_QUOTAなんてお前が勝手に引っ張り出してきただけで
俺が言ってるのはキュー溢れの話じゃないから
何が「証明終了」だよこのクソバカ
0593デフォルトの名無しさん2016/02/11(木) 13:39:36.40ID:r+XipyqS
>>578
>PostMessageがFAILするヘボアプリなんか書いたことが無いので、試しにCreateWindow直後に
>while (PostMessage(hWnd, WM_NULL, 0, 0));
>するプログラムを書いてみると、ERROR_NOT_ENOUGH_QUOTAが発生する事が確認できる。
得意気に言ってるけどそんなもん当たり前の話だよ
メッセージキューだって無限じゃないんだから

まずは低メモリ下での実験をして低メモリなだけじゃPostMessageがエラーを返すことはない
という証明をしろよ
この低能シッタカくん
0594デフォルトの名無しさん2016/02/11(木) 13:46:20.87ID:COETO4tD
>>592
リファレンスには「低メモリ下の話」は載ってないってことだよね?
リファレンスに載ってる 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
>>594
さあもう10年以上もことで何のエラーだったかは覚えてないけど
低メモリ下ではPostMessageがエラーを返すことは事実だよ
newとかmallocが失敗するようになる前にそうなる。
XPだったと思うけどもしかしたらWindows2000だったかも知れん。
その監視プログラムのソースは持ってるから再び試すことは可能ではあるけど
そこまで暇人じゃない。

まあOSバージョンが何にしろ低メモリ状況ではAPIがちゃんと動けなくなることがあるなんていうのは
当たり前の話だと思うが???
0596デフォルトの名無しさん2016/02/11(木) 14:07:17.11ID:r+XipyqS
低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら
その証明プログラムを書くなんて簡単な事だよ
まずそれをやれよ
俺は今超絶忙しいから、低メモリ状況ではAPIがエラーを返すことがあるなんて当たり前のことを
わざわざ証明する気にはなれないね悪しからず

こんな当たり前のことも理解できない低能はどんだけ俺に迷惑かければ気が済むんだよ???
0597デフォルトの名無しさん2016/02/11(木) 14:10:14.16ID:xD0FV+ye
悪魔の証明っぽいんですけどそれは大丈夫なんですかね?
0598デフォルトの名無しさん2016/02/11(木) 14:13:42.80ID:Nr5EvEk2
低レベルAPIってスタックも積まないしメモリも使わないのに低メモリ下でこけるのはどういうときなんだろ
いまいちイメージができない
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
>>595
ん?それじゃ 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
・リファレンス上、PostMessageは失敗することがある
・リファレンス上、メモリ不足でエラーにならないとは書かれていないようである
・実際にメモリ不足でエラーになったと主張する>>509が登場

この状況なんだから「メモリ不足エラーというリファレンス上許された挙動があり得ないと言うならそれを証明しろ」
と言えばいいのにr+XipyqSは
0605デフォルトの名無しさん2016/02/11(木) 15:37:44.95ID:r+XipyqS
『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
こういう当たり前の主張にしつこくケチつけなきゃいられないようなタイプのクズ
っていうのは現実の社会にもそれなりに実在するから真面目な人は気を付けたほうがいいよ
もっともここでそれをやってるのは現実の社会から干されたどうしようもないゴミクズだろうが
0606デフォルトの名無しさん2016/02/11(木) 16:06:50.17ID:8QEa0xty
クズでもなんでもいいから早く処刑プログラム発動させろよ。
使えねえ奴だな。同類扱いされるぞ?
0607デフォルトの名無しさん2016/02/11(木) 16:31:59.03ID:r+XipyqS
>>606
発動させるときは不言実行だからな
お前は対象ですらないけど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
>>587
> このアホさ加減から言って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
ここまで臭い奴は2chでもそう居ない
ここ最近で一番ひどい
0615デフォルトの名無しさん2016/02/11(木) 17:15:45.76ID:r+XipyqS
議論で勝てそうに無くなったら訳の分からない人格攻撃に走るという行為はド低能にありがちな典型的なもの
もうそろそろチョン認定してくれてもいんだぜw
0616デフォルトの名無しさん2016/02/11(木) 17:19:03.88ID:rWlIZ3EB
>>615
今さらだが>>586のアンカーが間違ってたわ
576でなく578だったスマン
0617デフォルトの名無しさん2016/02/11(木) 17:19:34.12ID:R5nKPKgb
2chで生きる権利がないとか無茶苦茶言うやつには言われたくない言葉だな
0618デフォルトの名無しさん2016/02/11(木) 17:25:34.85ID:rWlIZ3EB
「もうそろそろチョン認定してくれてもいんだぜw」

腹痛ぇ
お前はどこまで日本語弱いんだ
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
もうほっといてやれよw
流れ作って>>619で緊急脱出したつもりなんだからw
0622デフォルトの名無しさん2016/02/11(木) 17:44:20.81ID:chyZ04S/
>>5「ベクタグラフィックスの為のクラスにスマポを使いたいんだけど」
>>39「こんなんでどない」
>>52「>>39 例外でリークする糞コード晒してんじゃねーぞハゲ。大人しくスマポ使っとけ。」←vectorがbad_alloc例外を出した場合の話
>>226「>>52 つまり君はこうすれば良いと思うわけだね?」
>>227「>>226 push_backの前にreserveすりゃ良いだろ」
>>449「push_backの前に一々reserve、ダメ絶対」
>>452「実装によっては遅くなるからといって一概に駄目なんて馬鹿げてる。例外安全の方が大事。」
>>460「つまり規格に書いてない例外は無視すりゃ良いって事だな!」
>>461「メモリ不足で落ちるとか商用でもよくあるから気にしなくても良いんじゃね?」
>>470「メモリ不足の対応は難しいもんな」
>>471「んなこたーない。メモリ不足で落ちる前にPostMessageなんかのAPIが失敗し始めるからそれを検出すればおk」
ここからPostMessageがメモリ不足でコケるかどうかという話になり、
リファレンス上にはメモリ不足に関する記述が無いんだがって話が出てきて

お前らプログラマなら実際に動かして試せよ・・・・・・
俺は手元にあらゆるソフトがメモリ不足でコケるような環境にしても良いマシンが無いからやらないけど。
0623デフォルトの名無しさん2016/02/11(木) 17:49:36.27ID:3YTkrGr2
>>622
その中で俺の発言は>>460だけなのだが
日本語が読めなかったのか?
0624デフォルトの名無しさん2016/02/11(木) 17:53:09.04ID:r+XipyqS
『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
みたいな当たり前のことに何故かしつこくケチを付け人格攻撃まで始めるキチガイ
というのは不思議なことにこの社会には少なからず実在します
真面目な人はこのタイプには十分に注意してくださいね
もっとも、ここでそれをやってるクズはゴミ社会すらから爪弾きにされたようなタイプでしょうが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:vxNioHuU
http://codepad.org/NOUfjFJYの実行結果
1816 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
>>628
特別に教えてやろう。(爆笑)

> メモリ不足と関係無いエラーを起こすとんちんかんなプログラムを見せて、
VirtualAllocって知ってる?

> newとかmallocが失敗するようになる前にそうなる。
アプリのメモリ管理とuser32のメモリ管理を混同してるようだから、知らなくても無理はないか。

処刑プログラム待ってるよ。
0630デフォルトの名無しさん2016/02/11(木) 19:02:18.97ID:8QEa0xty
超絶忙しいくせに丸一日レスし続ける時間はあったみたいだな
なんとも不可解な話だ
0631デフォルトの名無しさん2016/02/11(木) 19:23:27.23ID:WJf9jt/h
>>604
> この状況なんだから「メモリ不足エラーというリファレンス上許された挙動があり得ないと言うならそれを証明しろ」

>>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
>>622
> リファレンス上にはメモリ不足に関する記述が無いんだがって話が出てきて
・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
>>596
> 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら
> その証明プログラムを書くなんて簡単な事だよ
> まずそれをやれよ
やってあげたのに、プログラムを読めなかったでゴザルの巻
0636片山博文MZ ◆T6xkBnTXz7B0 2016/02/11(木) 19:53:16.50ID:RYWEZJ3R
:-)

_ _ _ _ _ (切り取り線) _ _ _ _ _
ここから下は二月号のおまけだよ!
0637デフォルトの名無しさん2016/02/11(木) 19:54:52.75ID:99mWF8FH
最近だとむしろ新鮮だな、ここまでのバカは
0638デフォルトの名無しさん2016/02/11(木) 19:55:03.32ID:chyZ04S/
>>634
俺もPostMessageがメモリを動的に確保するなんて話は信じられん
が、実際にそうなったと言ってるのだからそういう夢でも見たんだろう。

>>627
4MB単位じゃなくて、もうちょっと細かい単位で確保しても同じ結果になるよね?
ページの粒度はIntel系なら4KBだと思うんだけど

誰かWindowsをGPLにしてくれ。読みたい時に読むから。
0639デフォルトの名無しさん2016/02/11(木) 19:56:07.63ID:chyZ04S/
6が抜けた
0640デフォルトの名無しさん2016/02/11(木) 20:04:24.71ID:vxNioHuU
無能ID:r+XipyqSは証拠出されて逃亡済みだったか、ID:rWlIZ3EBは触っちゃいけないアスペの方だった。
まあ、無能とアスペ、どっちも社会の役に立たないクズなのででうでもいいけど。

ちなみにXp64で32bitアプリとしてコンパイルしたのを実行したら
1816 27 10000 unknown error
2G弱でVirtualAllocが失敗するのはアプリのメモリ空間の制限だね
念のために言っとくけど、user32はアプリのメモリ空間で動作してるので、
「システム全体のメモリが不足する状況と違う」とかおバカな事を言いださないように
0641デフォルトの名無しさん2016/02/11(木) 20:23:57.41ID:vxNioHuU
>>638
みたのはPostMessageがエラーになる事だけだよ。
> さあもう10年以上もことで何のエラーだったかは覚えてないけど
とか言ってるけど、エラーコード取得したならそういう印象的なエラーは憶えている、
実際無能が服を着て歩いてるID:rWlIZ3EBでもエラー自体は憶えてたし。

エラーコードまで取得してなかったんだろうな。これが合理的な説明。
0642デフォルトの名無しさん2016/02/11(木) 20:25:39.69ID:IhmK9YPs
sendmessage関数の使い方について教えて下さい。
自作システムからとあるシステムをsendmessage関数を使用して自動操作したいと考えています。
環境はVisualStudioのC++系です。

質問�@
sendmessage関数にて「ctrl + A」を送信するコードをご教授下さい。

現状以下になるか?と想定しています。
SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0);
SendMessage(wh , WM_KEYDOWN , *Aに相当する何か* , 0);
SendMessage(wh, WM_KEYUP, VK_CONTROL, 0);
SendMessage(wh, WM_KEYUP, *Aに相当する何か*, 0);

*Aに相当する何か*を教えて下さい。
また*Aに相当する何か*のコードを調べる方法も教えて下さい。
そもそもこのコーディングであっていますか?

質問�Aその他の自走操作関数について
SendMessage、PostMessage 以外に自動メッセージを送信する関数はありますか?
0643デフォルトの名無しさん2016/02/11(木) 20:49:05.18ID:vxNioHuU
誤 実際無能が服を着て歩いてるID:rWlIZ3EBでもエラー自体は憶えてたし。
正 実際無能が服を着て歩いてるID:r+XipyqSでもエラー自体は憶えてたし。
0644デフォルトの名無しさん2016/02/11(木) 20:49:36.44ID:WJf9jt/h
>>641
> > さあもう10年以上もことで何のエラーだったかは覚えてないけど
> とか言ってるけど、エラーコード取得したならそういう印象的なエラーは憶えている
そもそもソースがあるらしい(>>595 で口走ってる)ので、まともなプログラマーならエラーコード見て回避策を講じてるはず
って >>602 で指摘したら、ガン無視 w
PostMessage がエラーになったから適当にメモリー解放したらたまたまうまくいった
⇒ 俺スゲー発見しちゃった!!
ってとこじゃね?
0645デフォルトの名無しさん2016/02/11(木) 21:05:40.00ID:vxNioHuU
>>638
もう一個根拠追加
・メッセージキューは固定長である

これらの事実からメッセージキューはMSG構造体のアレイだと思われる
28バイト*10000で高々280Kバイト、へみたいなもんだね
アレイならERROR_NOT_ENOUGH_MEMORYなんて発生するはずないね
0646デフォルトの名無しさん2016/02/11(木) 21:11:11.48ID:WJf9jt/h
>>642
とりあえずこの辺りを見てみて
http://m.chiebukuro.yahoo.co.jp/detail/q1047081310
0647デフォルトの名無しさん2016/02/11(木) 21:27:36.84ID:rWlIZ3EB
駄目だ>>615の「もうそろそろチョン認定してくれてもいんだぜw」がじわじわ来る
ブロント級の迷言
0648デフォルトの名無しさん2016/02/11(木) 21:44:18.34ID:r+XipyqS
>>644
やれやれどうしようもない馬鹿揃いだな
こんなバカだから一日中張り付いてる暇があるんだな
>まともなプログラマーならエラーコード見て回避策
お前みたいな低能に言われなくても回避策は講じたよ
こういう状況では回避策なんてないという回避策だけどな
いい加減、自分が関わったことのない、これからも一生関わることのないような
事柄に知ったか発言するのは止めろ見苦しいぞ超絶低能
0649デフォルトの名無しさん2016/02/11(木) 21:48:08.11ID:vxNioHuU
>>648

> 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら
> その証明プログラムを書くなんて簡単な事だよ
> まずそれをやれよ
やってあげたけど、プログラム読めませんかあ?
0650デフォルトの名無しさん2016/02/11(木) 21:52:48.88ID:r+XipyqS
>>638
>俺もPostMessageがメモリを動的に確保するなんて話は信じられん
俺だって最初はビックリしたよ
でも低メモリ状況ではそういうことがあるというか、そもそも低メモリ下でAPIが
エラーを返しても誰も文句は言えないはずなのだが?
Windows7以降ではPostMessageの挙動は変わってるかもしれないけどね
気になるなら自分で試してみれば?極限的なリソース不足の時の
APIの挙動の詳細なんて再確認してやる暇なんてないし
0651デフォルトの名無しさん2016/02/11(木) 22:00:10.03ID:r+XipyqS
>>649
>やってあげたけど、プログラム読めませんかあ?
まさか>>627のことかw
> while (PostMessage(hWnd, WM_NULL, 0, 0))
VirtualAllocで6メガづつ確保するようなコードさらしてこの状況の確認になると思ってるのかwww
0652デフォルトの名無しさん2016/02/11(木) 22:05:31.98ID:vxNioHuU
7で変わったかとか言い出したぞ。爆笑
xp64でもおなじ動作という事実には目をつぶるらしい
0653デフォルトの名無しさん2016/02/11(木) 22:05:39.02ID:EuRhj+pR
SendMessageだと受理されなくてPostMessageだと受理される場合があるけどなんでなんだろうか
0654デフォルトの名無しさん2016/02/11(木) 22:06:13.06ID:rWlIZ3EB
プログラムは読んだが何の証明にもなっていないので
「論理的思考が出来ない低能なんだろう」
ということを再確認しただけだったな
0655デフォルトの名無しさん2016/02/11(木) 22:09:15.19ID:r+XipyqS
>>652
変わったかもしれないだ
確認なんてしてねーよ話を捻じ曲げるな卑怯者
0656デフォルトの名無しさん2016/02/11(木) 22:10:17.25ID:WJf9jt/h
>>648
もう一回書くね w

>>602
> エラーコードも書けない
> 回避方法も書けない
>
> ネタ決定でしょ
0657デフォルトの名無しさん2016/02/11(木) 22:12:35.67ID:vxNioHuU
>>651
思ってるよ
user32はkernel32のGlobalAlloc,LocalAlloc
ntdllのRtlAllocateHeapしか使っていない。
VirtualAllocがFAILする状況を作り出せば、どれを使っていても同じ事

ゴブリンには理解出来ないらしいな
0658デフォルトの名無しさん2016/02/11(木) 22:14:28.08ID:r+XipyqS
6メガじゃなくて64メガだった
こんなバカの相手をしてる俺って
0659デフォルトの名無しさん2016/02/11(木) 22:20:44.44ID:vxNioHuU
そこまでいうなら確認コードかいてみせろよ。 実行はしてやるから。

> 低メモリ状況だからといってPostMessageがエラーを返すことがないと証明したいなら
> その証明プログラムを書くなんて簡単な事だよ
簡単な事なんだろ。
0660デフォルトの名無しさん2016/02/11(木) 22:25:20.13ID:r+XipyqS
だいたい>>627のコードはVCじゃコンパイルさえ出来ないし
GCC拡張だっけかこういうの
> 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:vxNioHuU
Xp64で64bitアプリで実行 (ページファイル枯渇のメッセージがシステムトレイに出た)
1816 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
試したいならな>>627みたいなアプローチじゃだめだ
プログラムを2作って1つはメモリをバカみたく確保しまくるやつ
それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの
ブロックを確保したり解放したりリークしたりする

もう一つは普通のシンプルなWindowsアプリで定期的(常識的なサイクルの範囲で)
にPostMessageを行う
間違っても
> while (PostMessage(hWnd, WM_NULL, 0, 0))
はやっちゃだめだぞ
0664デフォルトの名無しさん2016/02/11(木) 22:38:12.36ID:vxNioHuU
>>660
> GCC拡張だっけかこういうの
C99だよ。知らないの? ぷぷっ VS2012から使えるんじゃないかな。
2012はもう捨てたからあやふやだけど、2013では使える。

ゴブリンはCとC++の区別がつけられないようだ
おかしなレイヤが挟まるとイヤだから、直に叩けるCで確認するに決まってるだろ
0665デフォルトの名無しさん2016/02/11(木) 22:41:11.32ID:vxNioHuU
>>663
それがuser32のPostMessageにどのように影響を及ぼすんだ?
user32は別プロセスからは完全に切り離されてるんだぞ。Win16じゃあるまいし。
別プロセスの影響を受けるのは「VirtualAllocでのメモリ確保」
0666デフォルトの名無しさん2016/02/11(木) 22:41:26.83ID:r+XipyqS
は?C99?知らんかったわ
よっぽどの事がなければ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
>>667
はて何か証明しないといけないことが有っただろうか?

ちなみにC99 designated initializerはVisual C++ 2013からだな
0670デフォルトの名無しさん2016/02/11(木) 22:47:40.34ID:r+XipyqS
なんとC++には「おかしなレイヤが挟まる」とか信じてるオカルト野郎だったか
>>665
64メガ単位のVirtualAllocじゃ俺の言ってる現象の確認になんてならないということは理解したか?
それにこれwwwは直したか
> while (PostMessage(hWnd, WM_NULL, 0, 0))
0671デフォルトの名無しさん2016/02/11(木) 22:49:15.63ID:cll589HH
プラットフォームの知識なんてどうでもいいじゃん♪
0672デフォルトの名無しさん2016/02/11(木) 22:57:33.08ID:rWlIZ3EB
おかしなレイヤはともかく、C++スレで「Cに決まってるだろ」の後出しはマヌケ過ぎる
0673デフォルトの名無しさん2016/02/11(木) 23:00:37.18ID:vxNioHuU
>>663
> プログラムを2作って1つはメモリをバカみたく確保しまくるやつ
> それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの
> ブロックを確保したり解放したりリークしたりする
このバカはメモリ管理が階層化されている事を知らないのだろうか?
Win32サブシステムではメモリ管理はkernel32が担当し、ntdllから
VirtualAllocで切り出したメモリブロックを小分けにしてアプリに
渡すが、kernel32はアプリのプロセス空間にロードされているので、
> それも64メガ固定とかじゃなくてランダムにもっと小さいサイズの
> ブロックを確保したり解放したりリークしたりする
こんな事しても他のプロセスにはなんら影響を与えない。

はあ、こんな初歩的な事すら知らないとは。絶句するしかないな。
0674デフォルトの名無しさん2016/02/11(木) 23:06:42.15ID:vxNioHuU
>>666
>よっぽどの事がなければ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
>>674
知ってるぞ。コッソリ言語をCにしてたんだろ
まさにアスペの典型的行動だよな
0676デフォルトの名無しさん2016/02/11(木) 23:11:08.81ID:IhmK9YPs
sendmessage関数の使い方について教えて下さい。
自作システムからとあるシステムをsendmessage関数を使用して自動操作したいと考えています。
環境はVisualStudioのC++系です。

質問�@
sendmessage関数にて「ctrl + A」を送信するコードをご教授下さい。

現状以下になるか?と想定しています。
SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0);
SendMessage(wh , WM_KEYDOWN , *Aに相当する何か* , 0);
SendMessage(wh, WM_KEYUP, VK_CONTROL, 0);
SendMessage(wh, WM_KEYUP, *Aに相当する何か*, 0);

*Aに相当する何か*を教えて下さい。
また*Aに相当する何か*のコードを調べる方法も教えて下さい。
そもそもこのコーディングであっていますか?

質問�Aその他の自走操作関数について
SendMessage、PostMessage 以外に自動メッセージを送信する関数はありますか?
0677デフォルトの名無しさん2016/02/11(木) 23:16:23.86ID:vxNioHuU
>>663
既にヒントは出してるのに
> プログラムを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
>>676
全部Microsoftのサイトで解説されてる

https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms646280(v=vs.85).aspx
ここのwParam The virtual-key code of the nonsystem key. See Virtual-Key Codes.
の「Virtual-Key Codes」でリンクされてる
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd375731(v=vs.85).aspx
で解説されてる
日本語版は必要なリンクが無く、「載ってねーぞ」となる場合が多い
0679デフォルトの名無しさん2016/02/11(木) 23:31:45.37ID:rWlIZ3EB
>>670
>それにこれ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:fLx6I9W4
ゆっくりしていってね!
But 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
ID:r+XipyqS
簡単にかけるんだろ。実行してやるからとっとと書けよ。
0683デフォルトの名無しさん2016/02/12(金) 01:00:35.33ID:tA3EE8V1
全く理解できない

ID:r+XipyqS PostMessageが落ちる状況をワイの監視プログラムで乗り切った
ID:vxNioHuU いや、そんな状況ありえんだろ。PostMessageは仕様通りの動きしかしない。

でいいのかな?

ID:rWlIZ3EB ←んで、こいつは誰?
0684デフォルトの名無しさん2016/02/12(金) 02:07:27.50ID:Ly2MKnK4
>>679
例えスリープしてキューの消費を待とうがエラーを返すことはないぞ
つーか確認した
やっぱりお前も相当に頭悪いな
0685デフォルトの名無しさん2016/02/12(金) 02:08:12.54ID:Ly2MKnK4
>>683
変なやつを庇っちゃって後に引けなくなったアホだよw
0686デフォルトの名無しさん2016/02/12(金) 02:11:51.19ID:Ly2MKnK4
>>651
お前が指摘してる事ってあらゆることが全て的外れ
VirtualAllocじゃ1バイトで失敗するまでループしても結果は同じ

それよりお前の自作の処刑プログラムを俺に実行してみてくんない?w
超興味あるw
0687デフォルトの名無しさん2016/02/12(金) 02:20:56.95ID:A6+sqZJr
君たち、C++の話をしろ

PostMessage やら SendMessage やらの話は↓こちらでどうぞ。
Win32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/
0688デフォルトの名無しさん2016/02/12(金) 06:54:45.97ID:dKyYxY1Q
>>683
ID:r+XipyqS PostMessageは低メモリ下でFAILする
ワイの監視プログラムはそれを乗り切った
ID:vxNioHuU いや、そんな状況ありえんだろ。
PostMessageがFAILするのはキューがあふれたから。(あふれた原因は当然、取り出してないから)

>ID:rWlIZ3EB ←んで、こいつは誰?
触っちゃいけないアスペ
0689デフォルトの名無しさん2016/02/12(金) 08:02:11.03ID:W1VJFYp+
>>683
仕様上は発明家ID:r+XipyqSが10年前に見た挙動が
起こりえないとは書かれてないぞ

ID:r+XipyqS PostMessageが落ちる状況をワイの監視プログラムで乗り切った。PostMessageは仕様通り。
ID:vxNioHuU いや、そんな状況ありえんだろ。PostMessageがFAILするのはキューがあふれたからに決まってる。ボクのPCで確認したもん。
0690デフォルトの名無しさん2016/02/12(金) 08:47:36.66ID:hlhHAQgj
>>689
> 仕様上は発明家ID:r+XipyqSが10年前に見た挙動が
> 起こりえないとは書かれてないぞ
起こると言うなら、そのエラーコードと回避方法を書けばいいだけ

まあ、書けない理由があるんだろ?

妄想で、引っ込みつかなくなったから
とかね (ニヤニヤ
0691デフォルトの名無しさん2016/02/12(金) 09:52:01.35ID:2s3eP2W9
そもそもPostMessageが低メモリによる動作不良を
検出できるなんてドキュメントなんて無いのに
それがまかり通るとか思ってること自体が
間違ってるってことに、なんで誰も指摘しないの?
ググってこのスレがヒットして
一般論だと勘違いが増えないことを
祈るのみだ。
0692デフォルトの名無しさん2016/02/12(金) 10:01:16.83ID:dKyYxY1Q
再三指摘してるけどね。
「オレは見た」「お前の再現プログラムはインチキ」「証明プログラムは簡単に書ける」
「VirtualAllocで一気に取ると再現しない、もっと小さいサイズ(ランダム)でalloc/freeすべし」
トドメが「7じゃ変わってるかも」
0693デフォルトの名無しさん2016/02/12(金) 10:48:49.14ID:guNonXlH
template<char N> struct hoge{};は可能ですか
c++11と03両方の場合教えてください
0694デフォルトの名無しさん2016/02/12(金) 10:51:40.09ID:YW9gyZkt
>>691
このスレはズレたことを真顔で言い合うスレです
悪い意味での裸の王様はこのスレにたくさんおり
良い意味での子供はこのスレにはほとんどいません
誰もがバカの目には見えない服を着て戦っています
0695デフォルトの名無しさん2016/02/12(金) 11:30:47.56ID:+xxm9BEP
>>693
可能、とは?
0696デフォルトの名無しさん2016/02/12(金) 12:09:40.44ID:nrgTBvRP
>>693
コンパイルが通るか否かで言ったらどっちでも通る。

ただ、使う時に
hoge<'A'> foo;
とか書くことになるだろうから一体何を意味してんだか分からんだろうけど。
0697デフォルトの名無しさん2016/02/12(金) 12:50:54.13ID:1YUHUC0D
>>696
わかるよ、顔のAAでしょ?
0698デフォルトの名無しさん2016/02/12(金) 13:03:22.47ID:HGC0xuFL
まだゴミどもがほざき続けてて笑えるwww
『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
どうしてこんな単純な当たり前な主張に必死になってケチをつけ続けるんでしょうか?www
そんな超絶低能キチガイだから一日中ここに張り付いて戯言垂れ流していられるんだな
羨ましい限りだよ
0699デフォルトの名無しさん2016/02/12(金) 13:11:03.95ID:t3iUoxu4
物理メモリーがたりなくなっても仮想メモリーをつかうから重くなることはあっても失敗することは無いだろ。
0700デフォルトの名無しさん2016/02/12(金) 13:14:35.06ID:hlhHAQgj
>>698
> 『低メモリ状況ではPostMessageに限らず多くのAPIが失敗する可能性がある』
> どうしてこんな単純な当たり前な主張に必死になってケチをつけ続けるんでしょうか?www
具体的に何も書かないチキン乙
あっ、書けないんでしたっけ? w

> そんな超絶低能キチガイだから一日中ここに張り付いて戯言垂れ流していられるんだな
ブーメラン乙

> 羨ましい限りだよ
羨ましくはないけど w
0701デフォルトの名無しさん2016/02/12(金) 14:27:30.45ID:dKyYxY1Q
>>698
とっととPostMessageがERROR_NOT_ENOUGH_MEMORYでFAILする検証プログラムかけよ。
簡単なんだろ。実行はしてやるよ。
0702デフォルトの名無しさん2016/02/12(金) 14:36:31.54ID:dKyYxY1Q
32ビットアプリ一つが張り切ってメモリ食い尽くしても高々2G
10年前でもディスクは数十Gはあったはずだから、ページファイル使い尽くすなんて状況は発生しないよな
0703デフォルトの名無しさん2016/02/12(金) 14:48:14.25ID:mCcpVV1b
つーかメモリ不足で該当プロセスが落ちるならさすがにOSのログにどれがどうして落ちたか位は残るような。
0704デフォルトの名無しさん2016/02/12(金) 15:29:07.28ID:XKRoTCqu
>>702
ページファイルの最大値指定してないの?
0705デフォルトの名無しさん2016/02/12(金) 15:30:03.82ID:nrgTBvRP
KP41「どやっ」
0706デフォルトの名無しさん2016/02/12(金) 15:46:32.55ID:Ly2MKnK4
>>700
そういう言い訳良いから早くPostMessageを低メモリで失敗させてくれませんかね?
0707デフォルトの名無しさん2016/02/12(金) 15:47:00.71ID:Ly2MKnK4
おっと間違えた>>698な
0708デフォルトの名無しさん2016/02/12(金) 15:49:33.84ID:hlhHAQgj
>>702
実メモリー2GBでページング領域に数十GBも割り当てるとかバカすぎだろ…
今時もっさりするのが嫌で実メモリー4〜8GBとか積んで仮想記憶切る奴もいるぐらいなのに
0709デフォルトの名無しさん2016/02/12(金) 15:53:58.60ID:Ly2MKnK4
もちろん動かすのは処刑プログラムでもいいよ(ニッコリ)
0710デフォルトの名無しさん2016/02/12(金) 15:56:02.47ID:dKyYxY1Q
>>704
NT4位までは頑張って色々設定してた気がする
2000以降はほとんどデフォルトだね
0711デフォルトの名無しさん2016/02/12(金) 15:58:55.28ID:dKyYxY1Q
>>708
言いがかりつける前によく読みたまえ。
0712デフォルトの名無しさん2016/02/12(金) 16:01:04.55ID:mCcpVV1b
6G積んだWin8.1 64bitで使用メモリ3G超え位で妙に重くなるからリソースモニターで確認したらスワップファイル読み書きしてやがる。
保険として書き込みするのは許せるとしてがっつり読み込みまでするのはどういう管理しているんだと。

ノートでhddだからreadyboostしたらけっこう軽くなった。
0713デフォルトの名無しさん2016/02/12(金) 16:03:16.55ID:dKyYxY1Q
>>708
あと、仮想記憶切ってモッサリ解消って言うのは素人のおバカ設定だから
プロのソフトエンジニアがそんな事言ってたら笑われるぞ
0714デフォルトの名無しさん2016/02/12(金) 16:24:44.45ID:Ly2MKnK4
>>713
へ?何いってんの?
WinはRAMが十分にあってもすぐswapoutするから
抑制するために切るのって運用側でも定石だぞ?
0715デフォルトの名無しさん2016/02/12(金) 16:54:06.96ID:dKyYxY1Q
>>714
素人ブロガーのヨタ記事を信用しちゃたなんちゃってシス管か
ベンチマークも載せてないヨタ記事信用しちゃダメ

https://tweakhound.com/2011/10/10/the-windows-7-pagefile-and-running-without-one/
Conclusion
After 20 or so hours of prep and roughly 32 hours of benchmarking there was no difference between having a pagefile and not.

自分で仮想記憶切ったときは非アクティブで放置してたアプリをアクティブにするスピードだけは向上したな。
0716デフォルトの名無しさん2016/02/12(金) 17:00:52.86ID:Ly2MKnK4
>>715
必死にググって探してきたの?
残念だったね
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+sqZJr
君たち、C++の話をしろ

PostMessage やら 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
>>711
> 言いがかりつける前によく読みたまえ。
ああ1プロセスの話をしてるのか
そりゃすまん

>>713
トラブルの元って言うだけだろ
それを理解してやるなら問題ないんじゃね?
自分はやろうとは思わないけど
0720デフォルトの名無しさん2016/02/12(金) 17:32:48.50ID:dKyYxY1Q
>>716
日本語の解説なのに読めないの?
そのページの意味わかる?
哀れ過ぎる。
0721デフォルトの名無しさん2016/02/12(金) 17:36:57.96ID:dKyYxY1Q
>>719
ベンチマークも無しにそう言う設定マニュアル作成できるってのが信じられんわ
インハウスでベンチマーク取ってて特定の運用形態下での設定ならありかも知れんが

定石って言うなら公開されてる根拠出すべきだね
ID:Ly2MKnK4
0722デフォルトの名無しさん2016/02/12(金) 17:51:04.63ID:Ly2MKnK4
>>721
まずこの記事な、主となるベンチをプロセス作成直後に実行してて
挙句にバックグラウンドアプリのページアウト後でも十分スコアが出る、
専有型のベンチしか使ってない

つまり、あからさまにページインアウトによるパフォーマンス低下を避けた方法でスコアを出し、
ページファイル無しと変わらないと言ってるので、参考にならない

正直こんなあからさまな酷い記事よく書けると思うよ
これ読んで技術者気取っちゃうお前さんは自業自得だけど
0723デフォルトの名無しさん2016/02/12(金) 18:13:44.60ID:dKyYxY1Q
new/mallocが失敗するのが謎だったけど、ID:HGC0xuFLのお笑い劇場の
舞台裏が見えてきたわ

・素人ブロガーのヨタ記事を鵜呑みにしてページファイルをオフにしていた
・だからnew/mallocで失敗する

・メモリが取れない状態で描画要求がくる。
・メッセージループのdefwndprocを介して呼び出されるgdiモジュールがメモリ取れなくなる
・メッセージループが回らなくなる、あるいは再描画要求が繰り返される
・メッセージキューがあふれる
・PostMessageが失敗する

ID:HGC0xuFLはここから、
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
という、おバカな結論に、至ってしまった。

C++のランタイムメモリアロケーターはOSから確保した分を使い切ってからエラーになるので、
メッセージキューがあふれる方が先だったのだろう

いやー、笑わせてくれたなあ

あっ、処刑プログラムの発動は引き続き待ってるから 爆笑
0724デフォルトの名無しさん2016/02/12(金) 18:15:44.63ID:dKyYxY1Q
>>722
定石っての根拠になる公開記事は?
0725デフォルトの名無しさん2016/02/12(金) 18:20:33.55ID:dKyYxY1Q
>>722
非アクティブなアプリに対する有効性は認めた上で読むんだから問題無いね

で、定石って言ってる根拠は?
0726デフォルトの名無しさん2016/02/12(金) 18:28:01.77ID:hlhHAQgj
>>721
> ベンチマークも無しにそう言う設定マニュアル作成できるってのが信じられんわ
設定マニュアル?
なんの言いがかりですか? w
俺はそうやってる奴がいるって書いてるだけなんだから、ちょっと落ち着け
そもそも
> 非アクティブで放置してたアプリをアクティブにするスピードだけは向上した
って言う効果はあるんだろ?
それをもっさり解消って言ってるだけだと思うし、何を必死に突っかかってるのかよくわからん

あと >>723 みたいな根拠のない憶測でレスするのは止めた方がいいし、ページングファイルを食い潰さなくても new/malloc が失敗することはある
0727デフォルトの名無しさん2016/02/12(金) 18:28:21.04ID:dKyYxY1Q
>>716
これがページファイルオフでの性能向上とどう関係してるのか説明しろや
0728デフォルトの名無しさん2016/02/12(金) 19:01:34.69ID:Ly2MKnK4
>>724
定石かどうかを証明するのは難しいな
権威的なものでいいなら軽く検索しただけでも
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
>>728
サーバーのページファイルオフなんてありえねー
メモリ枯渇で即落ちしてもオケなんて想像もつかんわ

これが定石ってどんな集団だよ
0730デフォルトの名無しさん2016/02/12(金) 19:58:57.38ID:NIVdBMY9
スワップなしでメモリ枯渇
↓
メモリ不足ですね増設しましょう
↓
ボッタクリ価格でメモリ増設まいどあり
0731デフォルトの名無しさん2016/02/12(金) 20:06:37.11ID:W1VJFYp+
>>690
仕様上あり得るとされるものを現在の実装で本当に起こるのか再現させてみるなど時間の無駄
起こりうる前提で物事を考えなければならない

まあ論理的思考が出来ない馬鹿にはちょっと難しかったな
0732デフォルトの名無しさん2016/02/12(金) 20:20:51.50ID:Ly2MKnK4
>>729
そらメモリ足らない環境でやったらただの馬鹿だろがw
足りてる状況で考えろよw
0733デフォルトの名無しさん2016/02/12(金) 20:24:11.68ID:hlhHAQgj
>>731
> 起こりうる前提で物事を考えなければならない

その話と

> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから

の状況を書く話は関件ないよね
妄想じゃないなら、エラーコードや対応策を書けるでしょ
本人忘れててもソースコードあれば思い出すのはわけないだろうし

って論理的思考が出来れば容易に理解できると思うけど w
0734デフォルトの名無しさん2016/02/12(金) 20:25:50.67ID:dKyYxY1Q
>>731
逃亡態勢にはいったようだが、
「起こりうる」ではなく、メモリ枯渇の前兆としてPostMessageがFAILするという、
ドキュメントに書かれていない主張をしてるんだから、
取り下げるか、立証する義務があるんだよ。わかるかな、中学生。
0735デフォルトの名無しさん2016/02/12(金) 20:32:26.84ID:ux6Bc/zl
このすれはなんのすれですか?
0736デフォルトの名無しさん2016/02/12(金) 20:34:25.94ID:isgeeUAQ
>>735
スレタイもテンプレも読めないカスはすっこんでろや
0737デフォルトの名無しさん2016/02/12(金) 20:46:57.18ID:bmljtWY7
いや全くだ。プラットフォームの話題なんてつまらないしいい加減にしてもらいたい。
0738デフォルトの名無しさん2016/02/12(金) 21:03:53.69ID:SFFFzIuJ
だれか>>589の話題に触れてあげて!!
0739デフォルトの名無しさん2016/02/12(金) 21:11:03.24ID:HGC0xuFL
>>734
はあ?お前やっぱりバカの極致だな
リファレンスのどこに低メモリ化で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:PeChAo5O
おめえがニート満喫してクソ暇なくせに超忙しいとか普通の人間なら恥ずかしくて憤死するレベルの嘘ついてコード書けずに逃げ回ってるからケチつけられてるんだといい加減気づけ?な?
0742デフォルトの名無しさん2016/02/12(金) 21:21:30.22ID:HGC0xuFL
バカどもが顔真っ赤にして自己紹介
本当に嘘なら嬉しいんだけどなwww
0743デフォルトの名無しさん2016/02/12(金) 21:22:41.29ID:HGC0xuFL
てかこんなとこでバカの相手してる場合じゃねえ>俺
0744デフォルトの名無しさん2016/02/12(金) 21:27:07.73ID:dKyYxY1Q
>>739
お前の主張は
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
だからね。
「メモリアロケーションに失敗する前」

ま、お笑い劇場の舞台裏は全部解明出来てるから逃げ出しても良いけどね。
0745デフォルトの名無しさん2016/02/12(金) 21:54:52.61ID:PeChAo5O
そろそろ釣れた釣れた言い出す頃合いかな?
0746デフォルトの名無しさん2016/02/12(金) 22:06:57.63ID:lbf6swjk
この話題、いつまで引っ張るんだろう
0747デフォルトの名無しさん2016/02/12(金) 22:15:29.87ID:dKyYxY1Q
PostMessageはメモリアロケーション失敗の前兆として使える。キリッ

って、職場でドヤ顔してたんだろうな。
当時を憶えてる同僚とかいたらどうするんだ?
0748デフォルトの名無しさん2016/02/12(金) 22:16:02.44ID:isgeeUAQ
HGC0xuFLがコードを提示するまで
0749デフォルトの名無しさん2016/02/12(金) 22:19:50.35ID:dKyYxY1Q
何年も前のいやな思い出で、それを上回るいやな思い出を作ってしまったバカが哀れでならない。
早期に逃走しとけばよかったのに。
0750デフォルトの名無しさん2016/02/12(金) 22:38:34.72ID:hlhHAQgj
>>748
永遠に無理でしょ
0751デフォルトの名無しさん2016/02/12(金) 22:38:45.21ID:ogWwf7PC
>>736
PostMessageは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:HGC0xuFL
やっぱりあいつは死に至らせて正解だと思えてなごむわw
0755デフォルトの名無しさん2016/02/12(金) 23:27:15.72ID:W1VJFYp+
やはり自然言語の理解力が欠落していると>>733や>>734のようなとんちんかんなレスが続くんだな
レファレンスを100回読み直せ
0756デフォルトの名無しさん2016/02/12(金) 23:38:11.01ID:W1VJFYp+
ここまで知能が低いと読んでもわからないだろうから一応補足しておくか

>>733
リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能

>>734
「メモリ不足でエラーにならないとは書いてない」と「メモリ不足エラーが有るとは書かれていない」は矛盾しないしどちらも間違ってはいない
ただ「メモリ不足エラーはあり得ない」というのは間違い
0757デフォルトの名無しさん2016/02/12(金) 23:39:06.98ID:HGC0xuFL
だいたいね。極限的な状況ではAPIが失敗することがあるなんて当たり前のことだし
PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る
そうしてるうちにメモリーリーク犯人のプロセスは死ぬから目的は達成できるというわけ
0758デフォルトの名無しさん2016/02/13(土) 00:03:32.55ID:MUp0G3Pc
>極限的な状況ではAPIが失敗することがあるなんて当たり前のことだし
抽象的過ぎ
当たり前なら何故具体例が一つもないのか?
被告の訴えを却下します
0759デフォルトの名無しさん2016/02/13(土) 00:24:37.37ID:zKS/hYh5
メモリ不足への対応の話題が続いた後、バカ颯爽と登場

471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi

Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0760デフォルトの名無しさん2016/02/13(土) 00:46:48.91ID:zKS/hYh5
APIのエラーコードをなんか取得しないのがあたり前 大爆笑
0761デフォルトの名無しさん2016/02/13(土) 00:50:14.82ID:rkbIirC9
>>756
> リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能

え“っ、マジで言ってる?

>>471 には
> その辺に対応するのがコツ

って書いてあるんだが w

まあご自慢の「対応」が…

>>757
> PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
> そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る

では恥ずかしくて書けんわな w
結局 >>512 で終了だったんじゃん
0762デフォルトの名無しさん2016/02/13(土) 00:55:31.18ID:CApp8RWm
いい加減 スレ違いの荒らし共は去れ
0763デフォルトの名無しさん2016/02/13(土) 00:58:17.06ID:rkbIirC9
>>760

>>509 で、
> PostMessageの戻り値を見たこともないゴミは黙ってろって

とか言ってたから、そこは
PostMessage の戻り値じゃなくて GetLastError だろ
って突っ込もうと思ったが、まさかのマジだったとは… w

ERROR_NOT_ENOUGH_QUOTA なんて見たこともなかったんだろうな
0764デフォルトの名無しさん2016/02/13(土) 01:34:04.31ID:u45lvCeq
実務じゃ使いものにならないゴミクズが何をほざこうか俺の作った監視プログラムは目的を達成したからw
こういう状況じゃGetLastErrorなんて蛇足なんだよこのクソバカ
0765デフォルトの名無しさん2016/02/13(土) 01:49:46.40ID:u45lvCeq
パフォーマンスカウンタを読みだすスレッドのRegQueryValueExとか
その結果をメインスレッドに伝えるためのPostMessage。ログを出力するための
ファイル操作とか極限的なリソース不足状態ではどこでどんなエラーが起ころうが
文句は言えない。俺の経験ではPostMessageが最初にエラーになったというだけだよ。
違うバージョンのOSでもそうなるかなんて知らないし、GetLastErrorなんてもっとどうでもいい。
0766デフォルトの名無しさん2016/02/13(土) 01:57:26.09ID:KZpZDJLQ
PostMessage使わなきゃいーじゃんwwww
0767デフォルトの名無しさん2016/02/13(土) 02:01:11.61ID:u45lvCeq
PostMessage使わなくたってそのうち他のAPIでエラーになるのは目に見えてるから
何の解決にもならないね
0768デフォルトの名無しさん2016/02/13(土) 02:12:00.43ID:u45lvCeq
極限的なリソース不足状態ではソフトがまともに機能できるわけはないんだよ
そういう状況で可能なのは自分が死なないように極力耐えること
バカが作った穀潰しソフトが動いている以上もうどうしようもない
そのソフトを安易にkillできないという苦しい状況だったし
でもそのうちそのバカソフトは自滅するから「このバカソフトがメモリを食いつぶして
他のプロセスまで巻き込んで自滅しました」って報告ができたというわけ
0769デフォルトの名無しさん2016/02/13(土) 02:18:24.92ID:mOEZHanV
C++で自分で直接メモリをアロックすんにゃ。
そういうのはライブラリに任せておけばいい。
メモリ確保してる処理は把握してなるべく使うな。
ほとんどスタックで片つくんだから。
0770デフォルトの名無しさん2016/02/13(土) 03:45:26.51ID:zKS/hYh5
>>763
それはね、日本語版msdnには「エラーを取得するには関数を使います」しか書かれてないからだよ 大爆笑
0771デフォルトの名無しさん2016/02/13(土) 03:50:36.67ID:zKS/hYh5
メモリアロケーションよりPostMessageがERROR_NOT_ENOUGH_QUOTAでFAILする理由なんて思いつきもしないんだろうな。

無い知恵振り絞って辿りついたのがPostMessageで診断 大爆笑

哀れ過ぎる
0772デフォルトの名無しさん2016/02/13(土) 03:52:23.57ID:zKS/hYh5
実務て使うマシンを素人ブロガーの戯言信じてページファイルオフにしちゃダメだぞ。
0773デフォルトの名無しさん2016/02/13(土) 08:05:49.98ID:rkbIirC9
>>766
それな〜
プロセス数の上限が読めないからいちいちメモリー確保してるみたいだし(⇒>>493)、余計な苦労を明後日の方法で解決してドヤってるだけやね
まあ、そもそもこの監視ソフトとやらが本当に必要だったかどうかも怪しいみたいだけど w
0774デフォルトの名無しさん2016/02/13(土) 08:07:18.11ID:GG2kKfuP
【SendMessage】関数【PostMessage】関数についてご教授下さい。

開発中のシステムからメモ帳のウィンドウハンドル(入力ウィンドウ)を取得し、
SendMessageやPostMessageを行っています。

PostMessageは成功するのですが、SendMessageが失敗してしまます。

なぜ、SendMessageが失敗するのか、原因をご教授下さい。

コードは以下の通りです。
-------------------------------
HWND wh = FindWindow(nullptr, p);//pは”無題 - メモ帳”です 本体のウィンドウハンドルを取得
wh = GetWindow(wh,5);//入力欄のウィンドウハンドルを取得

SendMessage(wh, WM_KEYDOWN, 'A', 0);
PostMessage(wh, WM_KEYDOWN, 'B', 0);
-------------------------------

このコードを実行すると b のみ出力され a が出力されません。
なぜでしょうか?環境面など悪さしてますか?それともコーディング間違いでしょうか?

同期処理を実現したいのでSendMessageが使いたいのです。

環境は以下です。
--------------
Windows7
Visual Studio
C++ cli
--------------
0775デフォルトの名無しさん2016/02/13(土) 08:10:50.39ID:tl7vIPkr
>>765
結局、「コツ」でもなんでもなかったと。
0776デフォルトの名無しさん2016/02/13(土) 08:23:05.67ID:HsLEl+zU
>>774
upはどうした?
win32apiすれにgo
0777デフォルトの名無しさん2016/02/13(土) 08:25:44.61ID:GG2kKfuP
>>776
もちろんupも入れてみたんですが、やはりダメでした。
何が原因なんですかね・・・原因がわかれば納得できるのでpost使おうと思うのですが
0778デフォルトの名無しさん2016/02/13(土) 09:19:28.60ID:rkbIirC9
>>774
取り合えず PostMessage の戻り値と戻値が 0 なら GetLastError の戻り値を確認することからかな

間違っても…
> PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
なんてタワケの言うこと信じちゃダメだぞ w
0779デフォルトの名無しさん2016/02/13(土) 09:31:02.81ID:zKS/hYh5
>>766
俺に言わせるとそれほど難しいことじゃない キリッ

> 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:ZcBYdk8a
こちらにどうぞ

Win32API質問箱 Build122
http://peace.2ch.net/test/read.cgi/tech/1451988219/
0781デフォルトの名無しさん2016/02/13(土) 10:18:33.52ID:e6sIQV8m
Visual Studio 2015 Update 2は変数テンプレートとUTF-8指定のオプションが付くようだ
0782デフォルトの名無しさん2016/02/13(土) 10:27:59.74ID:e6sIQV8m
is_function<void()&>::valueの値が間違っているバグのレポートを上げていたが直っている模様
0783デフォルトの名無しさん2016/02/13(土) 10:57:04.37ID:u45lvCeq
PostMessageの件
今朝ちょっと暇があったからWindows7 64bitで試してみたら簡単に再現したわ10分も掛からなかった
GetLastErrorの戻り値は1816(ERROR_NOT_ENOUGH_QUOTA )だ
0784デフォルトの名無しさん2016/02/13(土) 11:34:57.57ID:MUp0G3Pc
で、再現コードは?
0785デフォルトの名無しさん2016/02/13(土) 11:36:27.18ID:mOEZHanV
C++14はまだかー。
0786デフォルトの名無しさん2016/02/13(土) 12:03:30.93ID:u45lvCeq
>>784
コードくれくれうざい
やり方は>>663に書いた
大事なのはメモリを真に使い果たす悪役プログラムを作ることだよ
>>627みたいなやり方じゃ全然話にならない
そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ
犠牲者の方はシンプルなやつでいい
0787デフォルトの名無しさん2016/02/13(土) 12:10:30.02ID:Zu4nB+6U
 そういう極悪プログラムを作るのにはスキルがいるし
 10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ

.
0788デフォルトの名無しさん2016/02/13(土) 12:14:02.97ID:MUp0G3Pc
簡単に再現できること
当たり前であることと矛盾しますね
また複雑である場合他の部分の副作用である可能性は否定できません
証明義務のあるu45lvCeqに再度コードの提示を求めます
0789デフォルトの名無しさん2016/02/13(土) 12:18:11.17ID:zKS/hYh5
>>783
>>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
>>786
俺に言わせるとそれほど難しいことじゃないんで、今回は特別に教えてやるよ。 W大爆笑

絶対に死んではいけないプログラムにウインドウ持たせるのは、絶望的にプログラミングセンスが無い。
お前、ホームレスに転職した方が良いぞ。
0791デフォルトの名無しさん2016/02/13(土) 12:27:17.07ID:rkbIirC9
>>786
> そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作

って

>>513
> 低能が作った穀潰しゴミソフト

の話だよね

もう病院に駆け込んだ方がいいレベル w
0792デフォルトの名無しさん2016/02/13(土) 12:50:15.26ID:zKS/hYh5
>>786
なんか、応用の聞かない「メモリ不足対策」だね。
>>627みたいな超簡単な悪役にも対応できないのか。

墓穴掘ってやがる。ゴミクズって本当にバカだな。
0793デフォルトの名無しさん2016/02/13(土) 13:56:19.68ID:7PDbXjKY
どうしてコテハンは慈演をつづけるの
0794デフォルトの名無しさん2016/02/13(土) 13:59:03.92ID:Th9NieDp
C言語の検索するとC++のことが出てきやがってマジで迷惑。 いい加減にしてほしい。
0795デフォルトの名無しさん2016/02/13(土) 14:52:35.59ID:e6sIQV8m
そんな794に訃報だ
ハーブサッターはVisual C++がC99をサポートしない理由を訊かれて「しないからしない」的なアスペな回答をしている
Cにしかない機能以外は対応するが、それ以外はCはC++のサブセットとしてC++を使えということだ
0796デフォルトの名無しさん2016/02/13(土) 15:12:53.44ID:GG2kKfuP
>>774
>>776
>>777
>>778

ありがとうございます。
SendMessage(wh, WM_CHAR, 'A', 0);
で出来ました。

つまり、SendMessage でWM_KEYDOWN は使えないということですね?

次のステップなのですが、
「右矢印キーを2回押す」や「ctrl+Sを押す」といった事は、
SendMessageで行えますか?PostMessageを使うしかないでしょうか?

コード例以下です。
「右矢印キーを2回押す」
SendMessage(wh, WM_KEYUP, VK_RIGHT, 0);
SendMessage(wh, WM_KEYUP, VK_RIGHT, 0);
「ctrl+Sを押す」
SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0);
SendMessage(wh , WM_KEYDOWN , 'S' , 0);
SendMessage(wh, WM_KEYUP, VK_CONTROL, 0);
SendMessage(wh, WM_KEYUP, 'S', 0);
0797デフォルトの名無しさん2016/02/13(土) 15:15:43.59ID:jEq/NF/M
スレ違いをスルーせず中途半端に乗っかるからこうなる。誘導以外触れないほうがいい。
0798デフォルトの名無しさん2016/02/13(土) 15:35:45.74ID:QD8KbUeS
>>796
メモ帳立ち上げてkeybd_event()でやった方が早いぞ
0799デフォルトの名無しさん2016/02/13(土) 16:05:47.92ID:GG2kKfuP
>>796
>>798
keybd_eventやSendInputは最前面ウィンドウに対する操作になってしまうので、
使えないです。
※ウィンドウが最前面か否かに関わらず常に安定した操作を実現したいのです
0800デフォルトの名無しさん2016/02/13(土) 17:09:11.77ID:MXADxP3M
>>738以後誰も>>589にレスしてないのでレスすると
自分はあいぽんアプリ作りたくてXcode+Clang(とllvm gcc)使ってるよ
ここはVCの独自仕様を嫌うコメが結構出るし、VCばっかりということはないはず
自分も以前はWin+VCばっかりだったけど、Clangやgccに移植していかに自分のコードが
独自仕様に頼ってたか思い知らされた・・・
0801デフォルトの名無しさん2016/02/13(土) 17:36:13.24ID:e6sIQV8m
>>589
そもそもコンパイラーを使っていない
0802デフォルトの名無しさん2016/02/13(土) 17:50:22.29ID:8c5F/b7w
C++erのスルースキルの無さは異常
0803デフォルトの名無しさん2016/02/13(土) 18:13:39.59ID:Th9NieDp
馬鹿をV$に隔離するためには役立ってるんだからそこに触れるのは駄目。
0804デフォルトの名無しさん2016/02/13(土) 18:18:04.37ID:UpZGp0t4
http://codepad.org/Vtcbp6N8
のコード、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
>>804
あっさーとで落ちてるからなんかチョンボしてる。かな?
0806デフォルトの名無しさん2016/02/13(土) 18:40:12.59ID:jEq/NF/M
>>804
static const メンバ変数に初期化子をつけて宣言しても定義にはならないから。
面倒だが別途定義を書いておかないと、 const& に渡した場合などアドレスが必要になる
ような使い方をした時点でそういうエラーが出ることがある。
9.4.2 [class.static.data] p3
https://www.google.co.jp/search?q=%22The+member+shall+still+be+defined%22&;lr=lang_ja
0807デフォルトの名無しさん2016/02/13(土) 19:52:01.47ID:2d9oUeOe
えつ
0808デフォルトの名無しさん2016/02/13(土) 20:26:47.13ID:e6sIQV8m
const&はともかくアドレスを必要とする場合、
shallで要求されたことを満たしていないのでエラー等のメッセージを出す義務があるのではないだろうか
1.4 Implementation compliance p2
0809デフォルトの名無しさん2016/02/13(土) 20:55:19.29ID:ISK/9ZCR
出ることがあると言うか、出さなきゃあかんよな。
0810デフォルトの名無しさん2016/02/13(土) 22:00:43.12ID:5ubtGtDT
そんなバカな......
0811デフォルトの名無しさん2016/02/14(日) 00:02:32.46ID:M72BiSZl
>>810
疑問があるなら率直に書きなさいな。
0812デフォルトの名無しさん2016/02/14(日) 00:09:59.23ID:rASW1SI1
アスペに「何かしゃべれよ」とか拷問過ぎるw
0813デフォルトの名無しさん2016/02/14(日) 00:26:17.27ID:YtvhXGz3
俺に言わせるとそれほど難しいことじゃない
0814デフォルトの名無しさん2016/02/14(日) 00:35:43.88ID:qwowkzgX
>>811

>>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/6
最新の規格ももちろん重要だが、C++は変化が激しいので
C++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:H3NWVMks
>>815が規格票の解釈を間違えているとしたら誰が指摘するのか
0823デフォルトの名無しさん2016/02/14(日) 13:20:05.11ID:+WF+5Yyl
クラステンプレートのstatic const整数型データメンバの定義を外側に書いたことはないな。
大昔は enum 使ってたし。
0824デフォルトの名無しさん2016/02/14(日) 13:22:40.71ID:YtvhXGz3
変更か多い箇所だから、単に要求しただけだ。
PostMessageでメモリ状況の診断するような素人が紛れ込むと混乱するからね。
0825デフォルトの名無しさん2016/02/14(日) 13:30:57.56ID:jQtJnDco
XpでSendMeassageしまくると超もたつくというのはあるけど
PostMessageでメモリの使用状況調べるのは初耳だな
0826デフォルトの名無しさん2016/02/14(日) 14:10:17.13ID:jkMZu/bi
>>822
規格を読んだ他の人が指摘するだけ。何を心配してる?
>>815はわざわざ検証しやすいよう検索結果を示してるし、
N4567は誰でもダウンロードできるし、
メイヤー先生の本にも書いてあることだし。
0827デフォルトの名無しさん2016/02/14(日) 17:53:52.82ID:M72BiSZl
>>820
お疲れ様、プロの規格読みの人。
0828デフォルトの名無しさん2016/02/14(日) 18:18:09.59ID:YtvhXGz3
>>825
今週来てなかったのか? ド素人の>>471からの暴れっぷりを楽しんでくれ。
0829デフォルトの名無しさん2016/02/14(日) 18:27:29.02ID:/+rigQ84
>>471
PostMessageの挙動ってメモリアロケーションと無関係では?
だとしても、確認のためにPostMessageをうつのかな
0830デフォルトの名無しさん2016/02/14(日) 18:40:15.29ID:KVV6N47s
おいやめろ。蒸し返すな。気になるならWin32APIスレに行け。
0831デフォルトの名無しさん2016/02/14(日) 18:55:30.00ID:2GOq4jA1
わざとやっているんだろう
WIN32APIの仕様の話など、どうでもいいわ
0832デフォルトの名無しさん2016/02/14(日) 19:02:17.52ID:bGJc4W0W
なんかC++の質問しづらいね

本当に初歩的な質問なんですけど
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:k6vnuBvm
>>832
c++11のstd::threadならきちんと設定されたコンパイラ、ライブラリなら使えるはず。
gccのバージョンは知らんが、win上で使うなら、mingwだったりcygwinだったりの影響もあるしなんとも言えない。

そもそも使えないってどういう事?
0835デフォルトの名無しさん2016/02/14(日) 19:42:39.56ID:YtvhXGz3
>>832
http://stackoverflow.com/questions/21211980/mingw-error-thread-is-not-a-member-of-std
ここいらへんか?
0836デフォルトの名無しさん2016/02/14(日) 20:05:21.87ID:YtvhXGz3
>>833
ウインドウもってるだけじゃなくてメモリアローケーションも必須とか言ってるから、
そういうプログラムを作るだけの技量が無い素人が無理して作ったので根本的にダメ。
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
>>829
すまん>>828のから飛んで脊髄反射でレスしてしまった
無視してくれ
0838デフォルトの名無しさん2016/02/14(日) 20:54:44.07ID:YKrrGoZL
あ、IDかわってるけど、>>829は俺で自己レスね
0839デフォルトの名無しさん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
>>834
すみません、自己解決してしまったのですが、そもそもライブラリがないという状況でした

MinGWを4.9.2にしたらコンパイルが通りました!
0841デフォルトの名無しさん2016/02/14(日) 22:31:54.01ID:jQtJnDco
>>839
AutoOperationはクラストか?クラスなら
AutoOperation::EnumChildProcがstaticでないとうまくいかんよ
0842デフォルトの名無しさん2016/02/14(日) 23:52:18.37ID:uelnhBqi
「System.Collections.Generic.List<T>型」を「LPARAM型」に変換する方法、
またその逆の変換をする方法、を教えて下さい。

List<T>型をLPARAM型に変換する必要があり、
その後で、List<T>型をLPARAM型から再取得する必要があるのです。
0843デフォルトの名無しさん2016/02/14(日) 23:59:09.56ID:KVV6N47s
>>842
それ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:oAOjOrx0
>>836
throw newがそんなに変か?
マイクロソフトのMFCとかDeleteする決まりでnew相当のことしてるし、
std::excetionが仮想デストラクター持ってる時点でnewは想定内だと思うが
0845デフォルトの名無しさん2016/02/15(月) 01:03:22.65ID:2arjOQyX
template<typename E, typename... A>
[[noreturn]] auto my_super_urtra_ excetion(A &&...p) {
 std::unique_ptr<std::excetion> r;
 try {
  auto sp = make_unique<E>( forward<A>(p)... );
  r.reset(sp.release());
 }
 catch(...) {
  termineit();
 }
 throw r;
}
0846デフォルトの名無しさん2016/02/15(月) 01:18:37.66ID:t53MVuXe
CreateThreadでスレッド作成した場合crtが正しく動く保証はある?
0847デフォルトの名無しさん2016/02/15(月) 01:27:44.57ID:FDnCcdJi
イニシャライズ関数とかないんかなー。
0848デフォルトの名無しさん2016/02/15(月) 07:11:27.03ID:X0JRo1x/
Win32の話はスレ違いだな
0849デフォルトの名無しさん2016/02/15(月) 07:58:34.47ID:CWNdtN9u
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14155900084
0850デフォルトの名無しさん2016/02/15(月) 08:29:56.66ID:E84Q1jzs
>>844
>>845も書いてるけど、スマポにいれるときに必要でしょ。
MFCがそうしてる理由は知らない。もう調べる気にもならない。
0851デフォルトの名無しさん2016/02/15(月) 15:58:42.31ID:OrmzHinO
>>846 動かないから代わりに _beginthreadex を使う
0852デフォルトの名無しさん2016/02/15(月) 19:21:41.46ID:/dhi15sf
ランタイムに依存せずに,win32api を直接叩くの筋だろうに
0853デフォルトの名無しさん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
昔、plaugerかmeyers様が言っていた「これはリソースリークじゃないんだぜ」ってセリフをドヤ顔で言ってみたくて
>>853みたいなコードを書いてみたが、なんのメリットもないどころか害しかなかったorz
0856デフォルトの名無しさん2016/02/15(月) 20:39:29.70ID:/dhi15sf
>>853
どっちもリークしてるよ,後者は検出をとちっているよ
0857デフォルトの名無しさん2016/02/15(月) 20:42:06.75ID:515HeFhA
cppcheckって
int* i = new int;
は検出するけど
new int;
ってやると検出してくれないクソツールだったような
0858デフォルトの名無しさん2016/02/15(月) 21:30:54.97ID:E84Q1jzs
リークとは寿命が終わったオブジェクトにメモリ領域が割り当てられている事
グローバル変数の寿命はプログラムの終了に等しいのでリークではない
0859デフォルトの名無しさん2016/02/15(月) 21:45:37.09ID:g9kjW0Ge
>>858
int *i ;
の
iそのものはな。
0860デフォルトの名無しさん2016/02/15(月) 21:58:25.68ID:cINU//5g
C++使っていてメモリ以外のネイティブリソースのことが頭にないなんてどれだけアホなんだ
0861デフォルトの名無しさん2016/02/15(月) 21:59:58.72ID:Kxee8Til
>>858
それな
めんどくさくなりそうだから黙っておいた
0862デフォルトの名無しさん2016/02/15(月) 22:47:14.02ID:nJzI4k3D
>>858
僕のドヤッを横取りしないでくれまいか
0863デフォルトの名無しさん2016/02/15(月) 23:22:30.66ID:t1etBRNf
>>858
グローバル変数のリークなんて誰も言ってないことでドヤ顔されても… w
0864デフォルトの名無しさん2016/02/15(月) 23:47:29.60ID:sBsZfSdn
アスペは指摘するポイントがずれているな
「グローバル変数の寿命はプログラムの終了に等しいので(グローバル変数で参照されているオブジェクトの寿命もまたプログラムの終了に等しいので)リークではない」
という日本語だろうに
08658532016/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
マジ>>860に尽きる、
>>858のリークの定義は片手落ちすぐる
0868デフォルトの名無しさん2016/02/16(火) 06:42:53.10ID:8Pefi829
そもそもintをnewするな
0869デフォルトの名無しさん2016/02/16(火) 08:09:37.14ID:5UqE7wWz
おまえらナマポ好きだな
0870デフォルトの名無しさん2016/02/16(火) 09:22:32.06ID:WpzjUCIx
>>859 >>863
ヒープ領域とプログラムの終了に関係に対して典型的な勘違いをしている可能性がある
(>>853の一番目の例で「リークしている」と考えている可能性)

>>866 >>868
お前らはおそらく他のみんなより周回遅れだからもうレスしないほうがいい
0871デフォルトの名無しさん2016/02/16(火) 13:01:17.95ID:55V2OvFf
>>870
お前は周回遅れ以前に方向が明後日だからレスするなよ…
0872デフォルトの名無しさん2016/02/16(火) 13:30:13.10ID:7QfacfPp
熟練者が下位ライブラリで使う以外ではnewは絶対に使わせるな!
JavaやC#から流れてきた人間にはC++のnewは到底扱えないものだと
いうことが繰り返し繰り返しはっきりしてきた
0873デフォルトの名無しさん2016/02/16(火) 13:36:34.99ID:DcMkse9A
そっかぁ
繰り返し繰り返しはっきりしてきたかぁ
0874デフォルトの名無しさん2016/02/16(火) 13:39:06.49ID:xyyoUOSC
sbrk と mmap はok?
0875デフォルトの名無しさん2016/02/16(火) 13:49:41.64ID:8Pefi829
プログラムの終了でヒープが開放されるのはOSの機能の話であっても、言語仕様ではないよね?
基本的にはプログラム内でnewしてアロケートしたメモリはdeleteしないとダメなんじゃないの?
それをメモリリークと呼ぶかどうかは別として
0876デフォルトの名無しさん2016/02/16(火) 16:53:19.68ID:3V9H/1fh
今はツールが検出できるかって話だから、どうした方が行儀が良いとか関係ないんだよ
VCのメモリリーク検出ツールなら>>853の下のバージョンのコードのメモリリークを検出するよ
しかし、cppcheckは静的に解析してメモリリークを探すものだから限界があるのだろう
0877デフォルトの名無しさん2016/02/16(火) 17:09:29.10ID:3V9H/1fh
あと、メモリリークに対する考え方がツールによって異なるのだろう
VCのメモリリーク検出ツールは、newしたものをdeleteし忘れていたら
プログラム終了時に教えてくれる単純なものだが
これとは違ったポリシーのツールなのかもしれない

例えば、どこからも参照されていないメモリブロックが有ったら、メモリリークとする、という考え方なら
グローバル変数に突っ込んである限りは、プログラムが生きている間はずっと参照が残るので
deleteしなくてもメモリリーク扱いにならない、とかかもしれない
良くは知らんが
0878デフォルトの名無しさん2016/02/16(火) 23:59:38.31ID:RidGc7qJ
で?
0879デフォルトの名無しさん2016/02/17(水) 00:49:29.84ID:BPMYjlVf
>プログラムの終了でヒープが開放される
これやってくれない処理系って例えば何ですかね?
組み込みのOSとかだとあるんかな
0880デフォルトの名無しさん2016/02/17(水) 01:03:08.75ID:N1klTUFY
>>853
早い話そのツールはリーク検出については使いものにならないということ
0881デフォルトの名無しさん2016/02/17(水) 07:43:11.29ID:d8kqwnnS
プログラム終了までと言うけど一つの翻訳単位で
 A a;
 int * p;
Aのデストラクタが呼ばれたときはpの寿命尽きてるだろう
0882デフォルトの名無しさん2016/02/17(水) 09:50:12.84ID:STxbdzYG
>>881
os(ランタイム)が仕事しないかもよ
0883デフォルトの名無しさん2016/02/17(水) 10:12:54.63ID:UG2kvZqb
 int * p;
pの寿命が尽きたあとでpが指していたヒープ領域が回収されていなければ、その時点でメモリリーク。
そのあと回収されるかどうかは別の話。
0884デフォルトの名無しさん2016/02/17(水) 20:09:44.69ID:o4vOr9JW
だけど、LinuxやGNUの人たちの中には
プログラム終了時にプロセスで使っていたメモリを開放しない派の人たちがいるでしょ
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
valgrindのメモリリーク検出が使ものにならないとかwww
使い物にならないのはお前だろ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:g2jiUPfD
delete global;してもOSには返却されないぞ。
0890デフォルトの名無しさん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:BJJMKH5P
バカに自分のバカさ加減を知らしめないとスレのレベルは下がる一方だろ?
0893デフォルトの名無しさん2016/02/17(水) 21:39:05.85ID:e1xOPzhr
>>892
アンタのレスは良いよ

でもさ、きっとそれも無駄に終わる
もう毎度毎度のクソ展開は始まっている
0894デフォルトの名無しさん2016/02/17(水) 22:48:07.25ID:N1klTUFY
OSが解放してくれるからーの奴はまともに開発の仕事やったことないんだろうな
0895デフォルトの名無しさん2016/02/17(水) 22:49:54.80ID:/p51h0GV
いちいちこれはOSが解放するからOKとか自分で解放しなくちゃだめとか区別する方がめんどくさいだろ
全部解放すりゃいいだけなのになんでわざわざ手間かかる方を選ぶのか
0896デフォルトの名無しさん2016/02/17(水) 22:57:23.22ID:N1klTUFY
デバッガで動かして終了時にリークメッセージがぞろぞろ出るやつなんて作ったらボコボコにされるわw
共同作業が全くない環境ならいいかと思うかも知れんが本当にアカンリークが分からなくなるだろ
0897デフォルトの名無しさん2016/02/17(水) 23:33:08.75ID:nBw88SJt
デバッグ版はまじめに exit
リリース版は _Exit
0898デフォルトの名無しさん2016/02/17(水) 23:58:23.11ID:BpXyDkaJ
staticデータメンバーが、constなリテラル型の場合、クラス定義内の宣言に、初期化子を書くことができる。
この場合、初期化子は定数式でなければならない。staticデータメンバー自体も、定数式になる。
初期化子を書かない場合は、通常通り、クラス定義の外、同じ名前空間スコープ内で、定義を書かなければならない。
この場合は、定数式にはならない。
0899デフォルトの名無しさん2016/02/18(木) 00:33:29.72ID:lQH/V+Cq
>>895
解放処理にもコストがかかるから
gnuのcpが終了時にハッシュテーブル全て丁寧に破棄してて数億件のファイルコピーをすると終了処理にも膨大な時間がかかってたから、
解放しないように修正されたのは有名な話だろ

>>896
だからまともなメモリリーク検出ツールであるvalgrindは >>853 の例をメモリリークとしないんだよ。
(オプション入れると報告はする)
それをメモリリークとして報告するようなツールがもしあるなら使い物にならないクソだから今すぐ捨てろ。
0900デフォルトの名無しさん2016/02/18(木) 00:51:59.53ID:8+Q+0B6C
>>899
さあその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
だからそのvalgrindオプションを教えてくれよ
それで>>853は解決だから
0903デフォルトの名無しさん2016/02/18(木) 01:30:26.74ID:lQH/V+Cq
問題ないから(デフォルトでは)検出しないだけだから教える必要ないよ。
そのオプションについて教えてほしいと本人に頼まれてるわけじゃないしな。本人だとしたらなおさら教える気しないけど
0904デフォルトの名無しさん2016/02/18(木) 01:36:35.06ID:8+Q+0B6C
なんでそんなに勿体ぶるんですかねー?www
0905デフォルトの名無しさん2016/02/18(木) 04:59:50.13ID:wtekQPk7
http://light.dotup.org/uploda/light.dotup.org299941.png
迷路しておちつけ。
0906デフォルトの名無しさん2016/02/18(木) 05:28:07.86ID:R4UuwZL3
gnuのcpが糞だからメモリ解放は要らないという理屈でいくと、
>>899みたいなアホがC++やってるからC++は馬鹿専用なので捨てるべき言語になるな
0907デフォルトの名無しさん2016/02/18(木) 05:34:41.02ID:wtekQPk7
>>905
これくらい以上の迷路作るときはヒープ必須なんやで。
これくらいのヒープをぽいぽいしてたら長期運用なんか無理やで。
0908デフォルトの名無しさん2016/02/18(木) 06:01:16.63ID:cxWjsl/x
自分の知能ではできないからと言って
出来ないことがさも普遍的であるかのように語られても
0909デフォルトの名無しさん2016/02/18(木) 06:48:52.39ID:wtekQPk7
コードくれ。
0910デフォルトの名無しさん2016/02/18(木) 07:23:38.84ID:wtekQPk7
頭の悪いAIが今後誕生するのはメモリを開放しないからだ。とかいってみる。
記憶領域が足りなくて馬鹿になる。レガシーきっていいかは本人にはわからないので貯め込みジバーク。
0911デフォルトの名無しさん2016/02/18(木) 07:32:21.02ID:QAq70uC+
https://youtu.be/YuBdhrZuJTs
0912デフォルトの名無しさん2016/02/18(木) 07:33:19.43ID:lQH/V+Cq
>>893
の言ったとおりになったな。

ちなみにvalgrindのオプションは実行結果を読んだら2回目にたどり着く
0913デフォルトの名無しさん2016/02/18(木) 07:44:35.15ID:wtekQPk7
>>911
すげー。よく続きからかけるな。
俺の>>905はコーディング4時間だぞ。前に一回作ったことあるからそれも踏まえてね。
最後に燃やしてるのが悲しみを誘う。昇華されたんですな。
0914デフォルトの名無しさん2016/02/18(木) 08:05:37.08ID:8+Q+0B6C
>>912
「2回目にたどり着く」www
とっととそれをここに書きやがれ
でなけりゃこのスレにはもう二度と書き込むな
ここはお前が勿体ぶって物知り顔するスレじゃないんだぞ
>>853をデフォルトでリークとしないクソツールなんてインストールする気にもならないが
0915デフォルトの名無しさん2016/02/18(木) 08:09:31.23ID:8+Q+0B6C
インストールする気にもならないがお前がそのオプションとやらを出したら
リファレンスくらいは確認してやるよ
0916デフォルトの名無しさん2016/02/18(木) 08:19:15.91ID:lQH/V+Cq
ここはお前が偉そうに教えを乞うスレだったんかw
0917デフォルトの名無しさん2016/02/18(木) 10:12:51.26ID:t7yUNGxd
こいつPostMessageの馬鹿じゃね?
間違いを認めず尊大な態度で開き直るってパターンが一緒
0918デフォルトの名無しさん2016/02/18(木) 12:26:56.51ID:cxWjsl/x
>>914
大丈夫だ。デフォルトで実行するとフルチェックの指定方法が表示されるからツールとして問題無い
0919デフォルトの名無しさん2016/02/18(木) 12:40:57.57ID:dlsHUuTC
どんなクズツールの紹介かと思ったらvalgrindじゃないか
たまにお世話になってます
0920デフォルトの名無しさん2016/02/18(木) 22:25:43.19ID:cxWjsl/x
>>899
>valgrindは >>853 の例をメモリリークとしないんだよ

valgrindはリークをdefinite,indirect,possible,reachableに分類分けしていて
>>853はreachableのリークとして判定される訳だが
どうして嘘をつくのか
0921デフォルトの名無しさん2016/02/18(木) 23:36:06.21ID:cxWjsl/x
>>898
>staticデータメンバーが、constなリテラル型の場合、クラス定義内の宣言に、初期化子を書くことができる

んなこたーない
0922デフォルトの名無しさん2016/02/18(木) 23:39:06.37ID:lQH/V+Cq
>>920
せやね
正確にはメモリエラーにしないだったね。
ごめんなさいね。
0923デフォルトの名無しさん2016/02/18(木) 23:40:13.29ID:jiQGl0+C
>>921
「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
>>924
有名人なのか?
0926デフォルトの名無しさん2016/02/19(金) 00:42:06.54ID:hdqL8A7v
>>921
しかしgccでもclangでもvc++でもできるのは事実
0927デフォルトの名無しさん2016/02/19(金) 00:57:16.68ID:qtkJJZHl
どうしてそう息を吸って吐くように嘘をつくのか
http://ideone.com/Bdo8QL

Visual C++:エラー
G++:エラー
clang:エラー
0928デフォルトの名無しさん2016/02/19(金) 01:03:47.07ID:yQQGU+cl
>>927
はい
http://ideone.com/NSy2jj
0929デフォルトの名無しさん2016/02/19(金) 01:06:02.63ID:hdqL8A7v
>>927
ああごめん、俺が言ってるのは整数型だった。
0930デフォルトの名無しさん2016/02/19(金) 01:09:43.25ID:yQQGU+cl
>>927
すまんミスってた。
0931デフォルトの名無しさん2016/02/19(金) 01:47:17.70ID:i395RlVR
>>928
ID:qtkJJZHlのC++は名前にliteralが含まれればそれはリテラルになる
0932デフォルトの名無しさん2016/02/19(金) 04:00:06.01ID:cPukLG4B
どういう事?
ID:qtkJJZHlが正しいんじゃないの?
0933デフォルトの名無しさん2016/02/19(金) 04:03:39.73ID:cPukLG4B
ああ、リテラルとリテラル型の違いがわかってない人がいるだけか
0934デフォルトの名無しさん2016/02/19(金) 10:19:45.75ID:P6v/Cgbl
> staticデータメンバーが、constなリテラル型の場合
誤 リテラル型
正 整数型・列挙型

クラスのstaticデータメンバーがリテラル型の場合は
(constではなく)constexprのときに初期化子が書ける(この場合正確には『初期化子を書かなければならない』)
0935デフォルトの名無しさん2016/02/19(金) 12:51:22.58ID:cPukLG4B
constはfloatもできないのね
今まで壮絶に勘違いしていた
0936デフォルトの名無しさん2016/02/19(金) 12:54:01.88ID:/AvoFovE
おまえら実はプログラム実際に書いたこと無いだろ(´・ω・`)
0937デフォルトの名無しさん2016/02/19(金) 20:04:26.07ID:eREs2hdb
つ http://peace.2ch.net/test/read.cgi/tech/1447298537/
0938デフォルトの名無しさん2016/02/19(金) 22:24:52.27ID:iVAswwzA
>>934
const volatile boolはconstな整数型ですが
クラス定義で初期化子が書けないのは何故ですか
0939デフォルトの名無しさん2016/02/20(土) 01:58:57.86ID:+KUF2f1T
君がその場の背景・空気・流れといったものを読めない人だから
いやいやかなりマジで
0940デフォルトの名無しさん2016/02/20(土) 04:44:38.86ID:WMw6sfmv
>>936
やめようよPostMessageしてた人にPostMessageするの
0941デフォルトの名無しさん2016/02/20(土) 04:50:30.62ID:fyeNp01h
>>936
彼らは歴史をなぞるだけのトレーサーだったりするのかもしれない。
0942デフォルトの名無しさん2016/02/20(土) 05:49:25.50ID:uiB0F9x6
まーだ極度なメモリ不足下でPostMessageが失敗することがあるという事実にいちゃもんつけてるバカが居るのか
よっぽど暇なんだろうな
>while (PostMessage(hWnd, WM_NULL, 0, 0));
とかやって「証明終了!」とかいうバカだから暇でしょうがないんだろうなあ
0943デフォルトの名無しさん2016/02/20(土) 06:02:10.07ID:fyeNp01h
いないから。いないから。静まり給え。
0944デフォルトの名無しさん2016/02/20(土) 07:18:35.18ID:0KWzs3FY
valgrindのオプションを今回だけは特別に教えて下さい!
0945デフォルトの名無しさん2016/02/20(土) 09:12:00.07ID:WMw6sfmv
valgrindも知らないなんてありえないよね…
0946デフォルトの名無しさん2016/02/20(土) 12:03:23.44ID:KnZWdrIJ
ID変えながらひとりで会話して可哀想
クソツールと否定されて相当悔しかったらしい
あ、PostMessageの時もそうだったかw
0947デフォルトの名無しさん2016/02/20(土) 16:35:56.90ID:WX8IzsC4
valgrind,結構役立たずなんだ‥
0948デフォルトの名無しさん2016/02/20(土) 17:50:05.19ID:7FQ5kWTX
エロ動画の「盛り上がり場面」を判定するソフトを作ろうとしているのですが、盛り上がりっぷりの検出をどうすればできるか悩んでいます
各コマごとのピクセル情報はすでにあるものとして、そのピクセル情報からその場面がどれくらいヒートしてるか計るアルゴリズムについて
アイデアがあれば教えて頂けませんでしょうか。
今はモザイクがかかってる箇所に対する反復運動の激しさから判定しようと思ってるのですが
それだけでは正確な盛り上がりっぷりがわからないのかなと思っています
0949デフォルトの名無しさん2016/02/20(土) 17:59:07.80ID:jIhi6tPT
大相撲の土俵際の攻防を判定するソフトがあるから参考にすれば?
0950デフォルトの名無しさん2016/02/20(土) 21:02:56.26ID:frKGVU8o
喘ぎ声から判定するのが近道なんじゃないかな
0951デフォルトの名無しさん2016/02/20(土) 21:52:40.73ID:owoJYL1y
>>950
喘ぎ声を必死におさえてる表情に興奮するオレみたいな奴もいるからそれはダメ
0952デフォルトの名無しさん2016/02/20(土) 22:49:16.33ID:T3VT//dk
あえぎ声を必死に押さえている音は認識できるんじゃね。

被験者100人くらいに膨張率センサつけてAV見放題で数ヵ月かければDLに必要な学習データも集まるかもよ。
0953デフォルトの名無しさん2016/02/20(土) 22:58:04.49ID:cJNMkscd
>>948
それ作ってなにに使うとよ?
0954デフォルトの名無しさん2016/02/20(土) 23:08:54.38ID:7FQ5kWTX
音ってのは盲点でした
女喘ぎ声から男の攻めっぷりが判定できて、男喘ぎ声から攻められっぷりが判定できるかも

>>953
見てる動画の雰囲気に合わせてUSBオナホを動かすソフト作ってます
0955デフォルトの名無しさん2016/02/20(土) 23:17:06.05ID:5/VRxrKY
使っている奴の脈拍や呼吸数をチェックする方がいいのでは?
0956デフォルトの名無しさん2016/02/20(土) 23:45:05.67ID:7FQ5kWTX
下世話な話で申し訳ないのですが
使ってる人間に合わせたシステムだとまるで意味が無いのです
あくまで「自分の意思に関係なく動く機械によって快感を得る」というのがUSBオナホの基本でして・・・
0957デフォルトの名無しさん2016/02/21(日) 00:03:45.26ID:vvUk+ASg
AVの構成ってだいたい決まってるでしょ
からみ→くんに→ふぇら→挿入みたいな
場面の切り替わりをうまく検出してシーンの割り当てるのがいい気がする
0958デフォルトの名無しさん2016/02/21(日) 00:06:32.35ID:Xn8BbX8n
音声信号をそのままUSBオナホの振動に変換するだけでもかなり良いんじゃないかな
0959デフォルトの名無しさん2016/02/21(日) 00:08:25.81ID:mZ9I4pVL
このスレッドは18禁になりました。未成年者はとっとと出ていって下さい。
0960デフォルトの名無しさん2016/02/21(日) 00:09:05.15ID:Xn8BbX8n
あとは動画の動き検出して、動きの多さにUSBオナホを合わせるとか
これに>>958もプラスすると、意表を突かれた制御不可能な感じになって楽しいのでは?
0961デフォルトの名無しさん2016/02/21(日) 00:14:22.54ID:xPHbwGFI
機械学習の話は機械学習スレへ池、
ttp://peace.2ch.net/test/read.cgi/tech/1439302488/
0962デフォルトの名無しさん2016/02/21(日) 00:29:39.88ID:S0uLAIyq
USBオナホとか技術の粋だな
胸があつくなるわ
使ったことないけど
0963デフォルトの名無しさん2016/02/21(日) 02:15:25.64ID:UzPMPT/j
C++ そこそこは勉強してたのですが
autoを知ったのはつい最近です。
いつ頃できたものなのですか。
0964デフォルトの名無しさん2016/02/21(日) 02:18:59.38ID:BYiGM6la
まずぉまえの言う最近知ったautoが何を指しているのか伺おうか
C++は同じキーワードに様々な機能を定義するUNKO言語なので
0965デフォルトの名無しさん2016/02/21(日) 02:34:57.21ID:BYiGM6la
なんだまた炎上学習法か?

auto int i1 = 0; 1998年
auto i2 = 0; 2011年
auto f1() -> int; 2011年
auto f2() {return 0;} 2014年
auto f3() -> auto {return 0;} 2014年
decltype(auto) j = i1; 2014年
auto f = [](auto p){}; 2014年
0966デフォルトの名無しさん2016/02/21(日) 06:47:26.21ID:UzPMPT/j
ありがとうございます。
2011のようです。
納得しました。
0967デフォルトの名無しさん2016/02/21(日) 06:47:59.04ID:Vu+T+AQR
autoはC言語登場初っ端からある
貴様が情弱なだけのこと
0968デフォルトの名無しさん2016/02/21(日) 06:51:27.85ID:Vu+T+AQR
そして式から型を判別しようとしてautoを使い始めたのはつい最近だ
0969デフォルトの名無しさん2016/02/21(日) 07:06:48.69ID:6FoMFdKR
周回遅れでドヤ顔 w
0970デフォルトの名無しさん2016/02/21(日) 09:03:30.90ID:UzPMPT/j
なんかすごく(レスの内容に)レベルの違いのようなものを感じます。
色んな人がいるようで面白くはありますが。
0971デフォルトの名無しさん2016/02/21(日) 09:36:47.03ID:UzPMPT/j
一応書いておきます。Cはかなり昔から使ってますがわざわざautoなんて書いたことはないと思います。
0972デフォルトの名無しさん2016/02/21(日) 09:51:17.50ID:etYdR+rT
>>971
ここで聞くのは効率悪いし、自分で今どきのC++をリハビリ学習した方がいいよ。
autoなんてたいしたことないけど、理解に時間がかかるものはいろいろあるから。
0973デフォルトの名無しさん2016/02/21(日) 10:16:36.25ID:UzPMPT/j
しばらくは個人作業のみなのでその限りにおいてきちんと動作はするものは作れはします。
今のとこSTLも浅く使えれば十分ですし、CLIとかはめんどくさいし、Boostは難しそうだしで、今から何勉強するのかが難しいんですよね。
やりたいこと何やるにしても環境依存のことばかりです。
0974デフォルトの名無しさん2016/02/21(日) 10:21:10.84ID:toLQNscP
>>954
俺に言わせるとそれほど難しいことじゃない
Windowsの場合、盛り上がり場面に入る前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0975デフォルトの名無しさん2016/02/21(日) 10:51:44.78ID:xPHbwGFI
>>974
それな
大事だよな
0976デフォルトの名無しさん2016/02/21(日) 11:17:52.46ID:VCiscas1
おじいちゃん、それ、自分のレスだよ
0977デフォルトの名無しさん2016/02/21(日) 11:47:49.10ID:TK0DoK1H
externってどういうときに使いますか?
0978デフォルトの名無しさん2016/02/21(日) 11:51:02.67ID:w4t8RSml
省略されてるだけで使ってると思うよ
0979デフォルトの名無しさん2016/02/21(日) 12:05:29.00ID:UzPMPT/j
ore.h
//#ifndef mydreamで括るなりすれば尚良
//#define mydream
extern int money;
extern class myhouse;
extern struct mywifes;
//#endif

ore.cpp

int money=500;
class myhouse
{
クラスの定義
};
struct mywifes
{
定義
};
とかしとけば
他のcppからは#include "ore.h"だけで済むとかでないの?
二重に定義されたりもないし。
0980デフォルトの名無しさん2016/02/21(日) 12:30:13.12ID:BYiGM6la
既に使っていると言うが、externが何をするものなのかを>>978が理解しているかどうか疑問だ
0981デフォルトの名無しさん2016/02/21(日) 12:51:33.19ID:m+BXwdHb
>>979
C++どころかC言語の理解も怪しい
初心者スレに行きなさい
0982デフォルトの名無しさん2016/02/21(日) 13:26:23.63ID:UzPMPT/j
>981
extern c++
あたりで検索したらすぐわかるよね?

俺の夢は実現しない

そういうことなのだよ
0983デフォルトの名無しさん2016/02/21(日) 13:38:31.92ID:Xl+njwgf
>>974
これが正しい
盛り上がり場面に入るとインスタンスがクイックソートされて参照カウントも静的スコープされるから
結果的にハンガリアン記法のフロントエンドみたいなランタイムライブラリで判定できる
0984デフォルトの名無しさん2016/02/21(日) 13:45:05.05ID:yp1la/Pc
>>983
いやー、ハンドルみたいな使い方を規定していて、
自分は外部関数で値を変更したいんですけど、ユーザーには触ってほしくない。
という、わがままな欲求です。
そのうちUnified Call Syntaxが入ったら、いろいろやろうと思ってるところです。
これくらい以上の迷路作るときはヒープ必須なんやで。
これくらいのヒープをぽいぽいしてたら長期運用なんか無理やで。
0985デフォルトの名無しさん2016/02/21(日) 13:48:22.46ID:hql2OPnW
>>974 のいうとおり
イベントログから対象データをピックアップしてヒューリスティックアルゴリズムによりトランザクション制御を解除することによってstatic領域を確保できる
0986デフォルトの名無しさん2016/02/21(日) 14:43:51.25ID:BYiGM6la
>>981
むしろ>>979こそexternの正しい使い方なのだが何を言っているのか
0987デフォルトの名無しさん2016/02/21(日) 15:14:19.72ID:Z2I+oPAi
>>979 の例 ore.h にある
extern class myhouse;
extern struct mywifes;

クラスや構造体の名前の事前宣言っていうのかな、
ではexternを書かないって話じゃないかな。
エラー出ませんか?


あと mywifes ってC++の文法と別に色々気になるんだけど。
0988デフォルトの名無しさん2016/02/21(日) 15:19:46.90ID:m+BXwdHb
>>986
まさかそんな初心者以下の馬鹿げたレスをされるとは思わなんだ
定義も無しにexternされた構造体型、クラス型変数をどう使うって?

レスを読んでなかったのか?はたまた不完全型を参照やポインタのみとして使用し、
ただコンテキストとして使用するなど世迷い言でも言う気か?
どういう言い訳が聞けるか見ものだな
0989デフォルトの名無しさん2016/02/21(日) 15:57:23.17ID:Xl+njwgf
知ったかレスと知った風レスとマジレスが飛び交ってカオスになってる
0990デフォルトの名無しさん2016/02/21(日) 16:12:50.14ID:OjYyYeGY
正しいツッコミは
mywiveだろうがアホ
が正解
0991デフォルトの名無しさん2016/02/21(日) 16:14:54.41ID:OjYyYeGY
typo
アホは俺だorz
0992デフォルトの名無しさん2016/02/21(日) 16:18:47.42ID:toLQNscP
>>988
本質はそこじゃ無い。
intはあってるし、不完全型という利用方法があるので、挙足取り失敗。

externは要らない子とか言ってたバカ?
0993デフォルトの名無しさん2016/02/21(日) 16:21:36.17ID:hql2OPnW
>>988
君は stdio.h の FILE 構造体のメンバを意識して使っているのかね?
0994デフォルトの名無しさん2016/02/21(日) 16:26:45.95ID:xPHbwGFI
externは引き続く識別子が外部シンボル(!=ファイルスコープ)であることを明示するためのもので、
省略したら外部シンボルになるから省略できる

クラス名や構造体名は単なる名前であってリンカが取り扱うシンボルではないから
externをつけるのは無意味
少なくともVCだと
extern class myhouse;
extern struct mywifes;
は警告の対象
0995デフォルトの名無しさん2016/02/21(日) 16:30:04.99ID:toLQNscP
不完全型にすらなってないのか。ちゃんと見てなかったわ。
0996デフォルトの名無しさん2016/02/21(日) 16:30:44.01ID:BYiGM6la
>>988
extern class myhouse;
を
extern class myhouse global_variable;
と読み間違えた
0997デフォルトの名無しさん2016/02/21(日) 16:31:32.38ID:xPHbwGFI
不完全型は次の機会のどっちかでしかまずお目にかからない&利用する必要が無い
 1. 木やリンクリストのノードを表すクラス or 構造体の定義(自分自身と同じ型へのポインタをメンバに持つ
 2. ヘッダファイルに構造体定義を書かずにすます「絶縁」テクニック

ただ最近のコードチェッカは2の絶縁テクニックで警告を上げてちょーウザいから、個人的には2は廃れたテクニック
0998デフォルトの名無しさん2016/02/21(日) 16:31:55.92ID:BYiGM6la
誤 extern class myhouse global_variable;と読み間違えた
正 class myhouse{}; extern class myhouse global_variable;と読み間違えた
0999デフォルトの名無しさん2016/02/21(日) 16:33:04.40ID:89qQ0NtX
wife の複数形は wives
1000デフォルトの名無しさん2016/02/21(日) 16:34:23.39ID:xPHbwGFI
1000ならメモリリークでPostMessage()がエラー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。