1 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 04:55:24.99 ] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part94 toro.2ch.net/test/read.cgi/tech/1329512856/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.78【環境依存OK】 toro.2ch.net/test/read.cgi/tech/1331894668/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/
441 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 08:52:29.69 ] オブジェクトを作って配下の変数やクラスにもデータを入れているのに 初期化関数を抜けたらポインタで持たせているデータだけNULLになっていました。 char*とかがそうです。中身を持たせているのにも関らず消えてしまうのはなぜなんでしょうか?
442 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:00:09.20 ] 具体的に書いてみろや 文章だけじゃイメージ沸かない
443 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:17:17.40 ] >>436 こんな感じかなあ class sub { public: int aaaa; }; class sper { public: sub* s; }; int main() { sub* su = new sub; sper* sp = new sper; sp->s = su; int sub::*aa = &sub::aaaa; su->*aa = 1; std::cout << su->*aa << std::endl; sp->s->aaaa = 2; std::cout << su->*aa << std::endl; delete sp; delete su; }
444 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:42:39.53 ] クラスの配列をコンストラクタで初期化することってできますか? class test{ public: cObj* objArray[10]; test() : objArray[0](new cObj) {}; }; みたいな感じなんですが・・・・・
445 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:50:21.49 ] >クラスの配列をコンストラクタで初期化することってできますか? できる。
446 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:56:04.82 ] >>445 どうやって?
447 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:58:31.43 ] やればできる できないと思った瞬間にゲーム終了だ
448 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:58:34.74 ] >>445 それできるのか? 知らんかった
449 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:05:05.19 ] newしたオブジェクトをdeleteする際に下のエラーが出て困っています。 どうしたらいいか教えてください。 HEAP[hoge.exe]: Invalid Address specified to RtlFreeHeap( 00000000, 00000000 ) Windows によって hoge.exe でブレークポイントが発生しました。 ヒープが壊れていることが原因として考えられます。hoge.exe または読み込まれた DLL にバグがあります。 可能であれば、出力ウィンドウに詳細な診断情報が表示されます。
450 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:19:59.96 ] ソースを示せ nullをdeleteしてるんだろ
451 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:23:54.40 ] >>444 デフォルトコンストラクタでいいならvectorにでも突っ込めばいいけどな
452 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:41:58.15 ] >>449 地道にデバッグするしかない 書いちゃダメなところに書いてる 多くの場合、配列の添字かポインタが意図しない値になってる
453 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:51:41.49 ] >>450 無理! 超雑だし、吐き気を催すだろうからww >>452 なるほど・・、取りあえずやってみます。
454 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:57:58.23 ] 答え:雑だから
455 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:04:26.07 ] >>454 明日から背中に気をつけろよ
456 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:13:47.59 ] ソースも出せないカスプログラムをデバッグさせられるのは嫌だ
457 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:25:43.53 ] どっちにしろって所だけどな カスだろうがカスじゃなかろうが、カス扱いは確実だろう やりたくなきゃやらなきゃ良い
458 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:32:25.52 ] 心のさけびをぶっぱされても・・・
459 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:40:58.92 ] 動的メモリ確保でいいならアライメントを解決した領域に単純なplacement new、 それが嫌ならaligned_storageから作れるスタック領域にplacement newをforなりwhileなりの 繰り返し構文で回せばできるだろ。
460 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:43:19.03 ] sizeof使った部分特殊化で重複定義を回避する方法って何か無いですかね? ideone.com/Axkqv ideone.com/k4arh ideone.com/7vhhV
461 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:43:25.50 ] 自分でnewしたものをdeleteできないなんてプログラマとしてどうなんだ
462 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:46:14.46 ] おとなしくスマートポインタ使えよ。
463 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 11:56:39.78 ] >>460 mpl::mapを使えばできる。 ちょっと待っててね。
464 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:18:14.76 ] >>460 できたよー(^o^)ノ ttp://ideone.com/pkiS4
465 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:35:47.70 ] またnullをdelete出来ないと思ってるアホが居る…
466 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:35:57.38 ] >>464 ありがとうございます template<int n>にして目的のものが出来ました
467 名前: ◆QZaw55cn4c mailto:sage [2012/05/30(水) 12:41:05.43 ] free(0)はOKなんですけど、delete はだめなんですか?
468 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:45:23.75 ] delete nullptr; は何ら間違ってはいない。 前規格だと delete NULL; かな。
469 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:35:27.65 ] ソースも出さずにデバッグ出来るのはエスパーだけ 元のソースが秘密で出せないのならせめて症状が再現する最小のプログラムだけでも 示してくれないと何も出来ないから
470 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:57:32.46 ] 質問の意図や前提をくみ取れない糞質問 が多い。それで回答者が逆質問をしたり 悪口を言ったりする。それを前もって思 い描く力が絶望的に欠如してるに違いない。 スーパーハッカーだけが意図を理解できる。 レアなそういう神が颯爽と登場する予感。
471 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 19:47:02.72 ] >>468 NULLじゃなくて0じゃね? NULLは、Cとの互換で残ってて 元々非推奨だし
472 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:19:34.26 ] NULLが非推奨って何の話だ
473 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:24:15.21 ] 0がNULL扱いになった頃の話
474 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:24:50.01 ] 逆じゃね?
475 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:29:53.11 ] ネットじゃ文章が見当たらんけど NULLだと、0だということがぼやけるから という事だったハズ
476 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:36:29.39 ] #define NULL (void*)~0 0がぼやけるってのを補足するとNULLだと別に 0じゃなくてもいいんだけど、C++じゃdynamic_castとか deleteとか無効アドレスとして0を前提とした 言語機能があるもんで、NULLだと値が不定でマズイ
477 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:39:30.91 ] 4.10 Pointer conversions [conv.ptr] 1 A null pointer constant is an integral constant expression (5.19) rvalue of integer type that evaluates to zero. A null pointer constant can be converted to a pointer type; the result is the null pointer value of that type and is distinguishable from every other value of pointer to object or pointer to function type. Two null pointer values of the same type shall compare equal. The conversion of a null pointer constant to a pointer to cv-qualified type is a single conversion, and not the sequence of a pointer conversion followed by a qualification conversion (4.4). JIS-X3014 4.10 ポインタ変換 ゼロと評価される右辺値を持つ整数型の汎整数定数式(5.19)を、空ポインタ定数と呼ぶ。空ポインタ定数 は、ポインタに変換する事ができる。その結果は、その型の空ポインタ値となる。空ポインタ値は、オブジェクト先 ポインタ型 又は 関数型ポインタ型のどんな値とも区別できる値とする。同じ型の二つの空ポインタ値は、 比較で等しくなるものでなければならない。空ポインタ定数から、cv修飾付きの型へのポインタの変換は、 単一の変換となり、ポインタ変換の後で修飾変換(4.4)を行うことはできない。 C++ではCと違い、void*を任意のポインタに代入する場合には明示的なキャストをしなくてはならなく なったためにvoid*を使うメリットがなくなったという話 しかし単なる 0 をヌルポインタなのかdouble型の0.0なのかコンパイラが判別出来ないためにまだ問題が 残ったので、C++11ではnullptrを新設した
478 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:42:10.74 ] >>477 C++98とかそんな最近の話じゃないぞ
479 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:44:03.62 ] >>478 ISO/IEC 14882:2003だぞ
480 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:48:17.83 ] >>479 98年以前から言われてた話だってこと そっからすると2003は最近でしょ あと、仕様が出来た理由と非推奨の話は別だからね 仕様書に書いてる話じゃなく禿のコラムとかそっちに 書いてあった内容だから
481 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 21:01:09.85 ] www.libjingu.jp/trans/bs_faq2-j.html#null 標準化前というとiostream.hとかの時代かなあ
482 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 21:15:42.11 ] >>434 例外切ってるけどstd::stringやstd::vectorはフルに使うよ。何かまずいの?
483 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 21:43:54.88 ] >>480 D&Eの日本語版のP291から書いてあるな
484 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 23:01:04.82 ] >>482 中でメモリ確保失敗したらどうすんの?
485 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 23:12:10.31 ] >>484 メモリ確保失敗しないように作る。ゲーム開発では普通のこと
486 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:04:33.51 ] >>485 そりゃ製品はそうなるだろうけど、開発中には失敗しちゃうこともあるでしょ。 呼び出し元でチェックとかできないわけだけど、どうすんの? わけわかんない動作が起こってから調べに行くの?
487 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:13:37.94 ] >>486 なぜ呼び出し元でチェックできないのかよくわからんけど
488 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:17:11.33 ] NULLチェックすりゃいいじゃんね
489 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:25:19.96 ] new (nothrow) 使うんだろ
490 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:27:53.20 ] >>487 vectorの中のメモリ確保失敗は標準C++ではbad_allocなんかの例外で通知されるんだけど、 例外無効にしてる状態で呼び出し元でチェックしようとしたら何かしら標準以外の方法を使うことに なるんじゃないの? >>488-489 vectorやstringではそうはいかないでしょ。
491 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:29:39.31 ] >>490 例外未対応の処理系ならabortへ直行
492 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:35:15.99 ] GoogleならSTLに頼らない独自の配列クラスとか作ってるらしい
493 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:44:25.22 ] >>491 やっぱそうか。ありがとう。
494 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:45:33.18 ] まあヌルポにアクセスしちゃうからね
495 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 00:46:14.25 ] >>476 んなこたーない。
496 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 07:20:19.34 ] ヌルポは必ず 0 だよ ビット表現が ~0 だろうが ソース上は必ず 0 で表現する だから >>476 はあり得ない というか (void*) 付きの NULL は C++ じゃなくて C だし >>476 は無茶苦茶やで
497 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 07:29:48.78 ] ~ヌルポ
498 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 10:50:31.28 ] ソースコード上のポインタリテラルの0はNULLとして扱われるが 内部表現が0(0番地)とは限らない //OK int* p = 0; delete p; //NG ただし殆どの環境で問題は起こらない int n = 0; int* p = reinterpret_cast<int*>(n); delete p;
499 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 11:32:04.45 ] そんなもん知ってる
500 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:16:01.43 ] C FAQ 読め。んで、そこに書いてあることは繰り返し書かなくていい。 www.kouno.jp/home/c_faq/c5.html
501 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:30:10.64 ] それCや
502 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:57:36.36 ] 規格票読んでもこの点に付いては同じ
503 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:01:32.98 ] 規格にこだわる人に限ってたいしたプログラムを書けない
504 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:02:29.84 ] ○○○さんのことかー
505 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:08:12.51 ] deleteするのとNULLを代入するのとどう違うんだよ
506 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:19:43.41 ] >>503 馬鹿かお前は 規格票は無駄な議論を終わらせるためにある
507 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:20:03.68 ] どこが同じなんだよ
508 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 14:39:11.68 ] deleteしてからNULLにしなきゃいけないのはなぜ? 最初からNULLじゃ駄目なの
509 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 14:51:05.54 ] >>508 int *a = new int(0); delete a; a = nullptr; の事?それなら、 int *a = new int(0); delete a; a = nullptr; ... // いろいろな処理 delete a; // 重複delete っていうのを仮にしたとしてもプログラムを落とさせないためだと思う。 でもそれやるくらいならunique_ptr使った方がいいし、これが必要な場面というと 「もしかしたらコードの中途半端な所でメモリ削減のためにdeleteする場合があるけど最終的な終了場面でもdeleteしたい」 っていうそうとうトリッキーで可読性の低い時だから推奨は推奨はしない。
510 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 14:51:43.63 ] 誤字まくりだけど気にしないで。
511 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 15:16:43.24 ] >>505 >>508 GCの話・・・なわけないよな
512 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 00:39:38.16 ] >>400 >メモリー不足→new_handler作動→リザーブが足りない→newが例外を出さない→newが0を返す?→異常終了 ないわwwwwww newが例外をスローせずに0を返すのはset_new_handler(0)とした場合(ハンドラ無し)であって set_new_handler()に有効なnew_handlerを設定すれば、メモリ確保に成功するか、 new_handlerから例外を投げるかするまでnew_handlerが繰り返し呼ばれるのじゃ というわけでど素人相手に潰れた漏れの土日を返せよ; ま、漏れの意見を潰したければ、>369の無駄な複雑さに噛み付くべきであった
513 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 00:47:51.29 ] >>422 Fooがバグっていたとして、叫ぶことになるのがFooの作者とは限らん ていうか、std::vector<T>にしても、コンストラクタからTのコンストラクタが呼ばれるわけだが、 その中で例外が発生した場合ときリークしないことが仕様で謳われてるっけ? いちおうVS2008ではリークしないみたいだけど、ようわからんので>376への回答は避けといた
514 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 01:07:08.93 ] >>512 > newが例外をスローせずに0を返すのはset_new_handler(0)とした場合(ハンドラ無し)であって そんな動作しません。 set_new_handler(0) はデフォルトのハンドラを指定していることになるので、普通に bad_alloc が飛ぶ。
515 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 02:06:07.06 ] >>513 > Tのコンストラクタが呼ばれるわけだが、 > その中で例外が発生した場合ときリークしないことが仕様で謳われてるっけ? new TでTのコンストラクタが例外を投げたらTのために確保されたメモリは解放される。 new T[x]でどこかの要素の構築中にTのコンストラクタが例外を投げたら構築済みの要素のデストラクタが呼ばれ確保されたメモリは解放される。 ただしTの内部でコンストラクタの中断でリークがおきるならそれはリークする。
516 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 02:12:02.44 ] >>513 >リークしないことが仕様で リークしたらバグ リークしないためのRAII ideone.com/Z52HM
517 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 06:27:50.13 ] >>512 お前が例外出さない方法があるって言ったから提示してくれた案だろ 痴呆かよ
518 名前:513 mailto:sage [2012/06/01(金) 06:36:18.11 ] しつれい ×: >376 ○: >378 >>514 ありゃ確かにそうかも、、、 // (main()の冒頭で) std::new_handler prevHandler = std::set_new_handler(foo); std::cout << "p=0x" << prevHandler << std::endl; // p=0x00000000
519 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 06:39:59.13 ] >>517 >お前が例外出さない方法があるって言ったから提示してくれた案だろ ┐(´ー`)┌ 気持ちは有難いが、規格準拠じゃない挙動を案と言われても困るな、、
520 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 06:51:04.78 ] ということで結局メモリー枯渇したらnewで例外は避けられん訳だ
521 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 07:25:18.44 ] nothrowしろよ
522 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 08:15:17.43 ] 例外安全にするかabortだろ NULL返す意味ねーよ
523 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:10:18.87 ] C++で背景画像とロゴ画像が二つ作ってあるときに ロゴ画像のロゴ以外の部分(何も無い余白部分)を透明にして ロゴ画像の何も無い部分には背景画像が映るようにするにはどうしたらいいんですか?
524 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:13:12.39 ] >>523 画像を二枚読んで合成する。 具体的には、 ロゴ画像のとある位置の色が透過色だったら背景色を出力バッファに書き込む。 透過色じゃなかったらロゴの色を出力バッファに書き込む。 それだけ。
525 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:30:01.46 ] だからそのやり方を(ry
526 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:36:08.00 ] 分かってない人に分かり難く言っても絶対分からない
527 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:38:55.07 ] む〜。これ以外にどう説明しようか。 >>524 画像を読むときはファイルオープンして画像フォーマットにそって画素データを読み込む。 画像ファイルフォーマットは数多にあるので対象になるものをググれ。 後は画素を比較して出力バッファに書き込むだけなんだが・・・。 コードがほしいなら宿題スレでお願いしてみるのがいいかもしれん。 あんまりいい方法じゃないけどな。
528 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:41:38.98 ] >>523 の内容だけじゃ >>524 ぐらいしか言えないだろw APIも画像フォーマットも謎なんだし
529 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:43:34.01 ] できるだけプラットフォーム非依存にするならDeVILで読み込んでOpenGLのテクスチャにして 合成はOpenGL側でやるとかか
530 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 11:19:10.19 ] >>528 用件が解決する方法であればなんでもいいだろ 客先で「画像形式は?」「API使います?」なんて聞くエンジニアは見たこと無い 指定が無いなら勝手に決めればいいこと
531 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 11:22:53.98 ] >>526 このスレではよくあること 理解してても他の人の説明聞くと「えっ?」ってなる
532 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 11:23:40.51 ] 何で客に聞く話になるんだよwアホ杉だろw
533 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 11:31:27.28 ] 質問もせずに独断で決めるエンジニアとか嫌だ 同じチームなら困る
534 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 11:59:26.97 ] 画像形式ぐらいさすがに聞くだろ…
535 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 12:51:38.25 ] 暇でしょうがないから突貫で作ったよ。3時間ではこれが限界。 ttp://www1.axfc.net/uploader/File/so/79537.zip&key=2ch もっと手を抜くつもりだったけど思ったよりかかってしまった。 画像形式はPGMテキストだ!まさに外道。 我を崇めよ〜〜〜。はっは〜〜。
536 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:21:30.92 ] カスだった
537 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:36:25.45 ] >>536 よく言った。その功績を讃えてすごいサンプルを作る義務をあげるよ。 たのんだよ〜。
538 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:38:30.63 ] ヘッダーに定義を書くなよ
539 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:46:27.56 ] >>538 テンプレート書いてた時の癖でベタ書きしてしまう。 手抜きの意味もあるんだが、正直スマンカッタ。
540 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 15:29:52.12 ] なにもしないやつほど文句を言う典型例
541 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 16:48:21.33 ] 突貫としても低レベル過ぎ