new/deleteで異常終了する(Visual C++)
1 :
デフォルトの名無しさん :
2010/01/06(水) 20:35:52 大変、困っています。 Visual C++ 2008でコーディングしています。 コーディングは何度も何度も見直しました。 間違っていません。 なのに、実行するとnewで異常終了します。 debug版で動かすと動きます。release版で動かすと異常終了します。 デバッグのしようがありません。 ホントに、コーディングは正しいんです。 こういう症状の原因って何が考えられるでしょうか。 よろしくお願いします。 deleteでも異常終了します。 未初期化ポインタのdeleteとかそんなのではなくて、 本当にコーディングはあってるのに、異常終了します。 動きは、毎回違います。 例えば、printfデバッグをしようとしてprintfを 挿入すると、異常終了ポイントが変わります。 でも、newかdeleteで落ちます。 ホントに、ホントに、コーディングは合ってるのに どうしようもありません。 もう何ヶ月も仕事が進みません。 このままだと、クビになっちゃいます。 お願いします、本当に、よろしくお願いします。
2 :
デフォルトの名無しさん :2010/01/06(水) 20:43:53
それは大変だ!今すぐマイクロソフトのVisual C++ の開発責任者に電話しろ!
コーディングを見直す前に ローカルルールを見直せ
┐(´ー`)┌ < サッサト クビニナレ
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
6 :
デフォルトの名無しさん :2010/01/06(水) 21:23:08
>>1 これってdelete文を全部コメントアウトしても症状は同じ?
一再deleteしなくても一応は動くでしょ。deleteしないとメモリーオーバフローしちゃう?
newで異常終了するってことは破壊されてる
8 :
デフォルトの名無しさん :2010/01/06(水) 22:00:39
世界が?
再インストールはしましたか??
たぶん、間違ってないよ
>>1 単発の質問でスレ立てはマナー違反な。
いちおう言っとくけど。
2008ってリリースモードでもデバッグできない?
ショートカットに Visuaru C++ って書いてないかチェックした方が良いな
14 :
1 :2010/01/06(水) 22:39:52
仕事のコードは載せられないですが、 下記のような感じなんです。 class C1 { private: // メンバ int *a ; int *b ; C2 *c ; // C2はクラスね public: // コンストラクタ C1( void ) { a = NULL ; b = NULL ; c = NULL ; return ; } ; // デストラクタ ~C1( void ) { delete [] a ; delete [] b ; delete [] c ; return ; } ; public: // 初期化メソッド int init( void ) { a = new int[ 5 ] ; b = new int[ 5 ] ; c = new C2[ 5 ] ; if ( !a || !b || !c ) { delete [] a ; delete [] b ; delete [] c ; a = NULL ; b = NULL ; c = NULL ; return -1 ; } return 0 ; } ; public: // 各種メソッド int xxx( xxx ) { xxx ; } ; } ;
15 :
1 :2010/01/06(水) 22:41:54
とにかく、 い。 コンストラクタでNULLを入れる。 ろ。 init()で領域確保。 は。 失敗したらNULLを入れる。 に。 deleteしたらNULLを入れる。 ほ。 デストラクタで開放する。 は、徹底してます。 上記、C2の例みたく、デストラクタが どんどん直列に呼び出される場合があります。
16 :
1 :2010/01/06(水) 22:43:06
> 6 いま、家なので、明日会社でやってみます。 もし仮にdeleteしないでうまくいったら、 deleteが原因ってことですか? > 7 何が破壊されていますか。 破壊のよくある失敗原因はありますか。 > 11 ごめんなさい。しりませんでした。次から気をつけます。 でも、ネットで調べても全然のってないんです。 もう、2chにアクセスするエリートプログラマしか 頼れないんです。 > 12 えっ、そんな方法あるんですか。 明日会社でトライしてみます。
17 :
デフォルトの名無しさん :2010/01/06(水) 22:44:37
18 :
デフォルトの名無しさん :2010/01/06(水) 23:07:37
>>16 もし、deleteを外して直るなら、同じポインタを2回deleteしてる可能性があるね。
>>14 を見るかぎり大丈夫そうだけど。
まあ、簡単に外せるなら1回外してみるのが早いけどね。
関係ないと思うけど、// 初期化メソッド でa b cのどれかがNULLだったらa b c ともdeleteしてるけど
これおかしくない? NULLポインタをdeleteする事になちゃうよ。
if ( !a || !b || !c ) {
if( a ) delete [] a;
if( b ) delete [] b;
if( c ) delete [] c;
a = NULL; b = NULL; c = NULL;
return -1;
}
return 0;
にしないと。まあ、new が失敗するなんて殆んど考えられないけどね。
NULLポインタはdeleteしても問題ないだろ。
ま、C1型の値をコピーしちまってるオチだろうな。
21 :
デフォルトの名無しさん :2010/01/06(水) 23:22:46
>>19 これはスマン。NULLポインタにdeleteしたことなんか無かったもんで。
22 :
デフォルトの名無しさん :2010/01/06(水) 23:34:14
今日の魚影は濃いな
そもそもnewが失敗した場合はNULLじゃなくて例外飛ぶから根本から間違えてんだけどな。 俺の感で言うと暗黙のoperator=でポインタをコピーして二重deleteとみた。
> コーディングは何度も何度も見直しました。間違っていません。 ぼくわるくないもん! ぼくわるくないもん! ぼくわるくないもん! ぼくわるくないもん! > なのに、実行するとnewで異常終了します。 わるいのはかんきょうだ! ぼくわるくないもん! って時点でもうね。 ガチで書いているなら向いていないから辞めなさい。社会人を。 ネタで書いているなら向いていないから辞めなさい。人間を。
しかし、何が悲しいって仕事でC++書いてるやつがこのレベルということ。
正直初心者がC++とかやると周りが不幸になるからやめたほうがいいよなー。
>>24 俺はC++で間違いなく書けたなんてRAII徹底しないと自信を持てないな。
生のポインタ使いつつ自信を持てる人をある意味、尊敬する。ある意味な。
destructorに一個一個debug文を入れてどこでオチてるか 調べるのが定石
>>23 一応、古い処理系だとnew失敗でnullが返る(std::nothrowなしでも)のはあるが…
自分はVS2008は使わんので分からないが、どっちなのだろうか?
>>25 烈しく同意。自分はC++に限らず「間違っていない」なんて口が割けても絶対に言えんわ。
>>26 このパターンだと、多分それだと捕まらないんじゃないかなぁ。
> 動きは、毎回違います。
ってことだから。
アホの書いたコードがビルドやprintfデバッグで挙動が変わる場合、高確率でメモリ破壊やメモリ未初期化が原因。
それにより、バイナリが変わる度にヒープやスタック(やそこに残ったゴミ)の状況が変化し現象が変化する。
そしてほぼ全てのアホは、根拠皆無なのに何故か肥大化したプライドを守るために
目が曇って and/or 意図的に目を曇らせ、いくらコードを見てもそれを発見できずに自分以外の何かが原因だと喚く。
> このままだと、クビになっちゃいます。
それはヤバいね。先手を打って自分から退職願を出せば自分都合になるし退職金ももらえるよ?
>>27 Visual C++ 6.0がNULLを返す最後の世代。
2008は9.0だから(数ヵ月後には2010(10.0)が出る)
普通のnewでNULLが帰ってくるのは現在考慮する必要は殆どないかと。
# 昔からのコードの保守で使わざるを得ない不幸な環境の人も多少はいるでしょうが
しかもSTLは例外返すことを前提に作られてるから メモリ無くなったらNULL参照で落ちるという糞処理系 まあ例外投げるようにすることはできるから そうすりゃいいだけの話ではあるが
operator=()とコピーコンストラクタをprivateに宣言して、 コンパイルが通るかどうか
最善案 C++じゃなくC#或はJavaで書いてみる。 十分本質的なコードが出来た後にC++に移植する。 プログラムに課せられている問題と、C++特有の 技術上の問題がごっちゃになると難しい。(特に VCは細かい技術上の配慮が必要で繊細) (いきなりC++で完璧なコードを作ること自体に無 理がありそう。それなりにCやC#,Javaの経験があっ たほうがいい) C++コード書けるんだったらJava,C#の コードを書くのはそれほど難しくは無い。 ただライブラリ関数の名前を覚えたり 調べたりするのがちょっと最初はきついかも
どこが最善なのか。
バグッたC/C++コードのデバッグだけはしないほうが 良い。精神衛生上問題が大有りだから。 仕様書がある限り、潔くそのコードを捨てて 書き直すのが最善。 JavaやC#とかのようなものでもそれが言える C++だったら尚更。
プログラミング言語c++隅から隅まで読めば
>>14 のコードじゃバグるのわかるだろ
> ホントに、コーディングは正しいんです。 ?
Javaとかだったら class c; と class[] c; を混同しようものならコンパイルが通らないから そういった系統のバグは発生しない点では初学者には優しいか...
なるべく自分でメモリ管理しない new C2[5] とかしないで std::vector<C2> を使う 添え字の範囲もチェックする
クビになったらまた教えてね
1は勤め先間違えたような感じが
>>1 まず最初にするべきなのは、そげぶ
>ホントに、コーディングは正しいんです。
その幻想をぶち壊すこと。
>>15 そのコーディングスタイルは効果が薄い上に問題がある。
> い。 コンストラクタでNULLを入れる。
> ろ。 init()で領域確保。
まずコンストラクタとinitを分ける必要が無い。しかもinitを忘れないように徹底するのが難しい。
NULLがあるとNULLの場合の動作も対応する必要がありプログラムを安定させるのが難しくなる。
> は。 失敗したらNULLを入れる。
newで失敗すると例外が投げられるので意味が無い。
> に。 deleteしたらNULLを入れる。
> ほ。 デストラクタで開放する。
>は、徹底してます。
これらの徹底は難しいよ。参照とRAIIとスマポを使おう。ともかく生ポは扱わないのが近道。
追伸 目で見て確認は徹底とは言えないので注意
44 :
1 :2010/01/07(木) 21:55:51
>> 6, 18 ダメでした。deleteを一切しなくても、newで落ちます。 >> 12 やり方が良く分かりませんでしたが、異常終了ポイントや変数値の チェックはできました。printfデバッグで異常終了するnewの直前まで 正しい値が出力される変数ですら、異常終了時にはめちゃめちゃに 破壊されてます。それどころか、プログラム全般にわたり変数の多くの 値がデタラメに改竄されてます。 >> 23, 27, 29 確かにそのようですね。勉強になりました。ただ、今回はそう簡単でも ありません。例外をキャッチするコードを挿入しましたが、とにかく newの途中で異常終了するので役に立ちません。 >> 24, 42 コーディングは合ってると書いたのは、単に質問だけすると、 ポインタの扱いとかdeleteの失敗とかそういう初心者向けの コメントしか来ないだろうと思ったので、敢えて書きました。 コーディングとは別のところで良く陥るミスとかないですか。 例えば、コンパイラオプションを間違えてるとか。 >> 28 メモリ管理の問題の可能性が高いとは私も思っています。 ただ、newで落ちるというのが解せません。例え、メモリ 管理が間違っていて、誤った代入がされていたとしても、 newで落ちますか?どんな時に、newで異常終了しますか?
45 :
1 :2010/01/07(木) 22:02:19
話変わりますが、今日、情報処理の合格証書が届きました。 嬉しいんですが、このデバッグが終わらないと、心から喜べません。 よろしくお願いします。
46 :
デフォルトの名無しさん :2010/01/07(木) 22:04:52
C2 クラスが怪しい
47 :
7 :2010/01/07(木) 22:10:22
俺の指摘が正しかったようだ
>>44 そげぶ
>コーディングとは別のところで良く陥るミスとかないですか。
その幻想をぶち壊さないと前に進めないよ。
とりあえず、落ちる最小のコードをupしてごらん。
deleteで例外吐くときってポインタがマイナス方向に走ってヒープ壊してる以外にないよね
>>44 まず、その「俺のノーミソは機能している」という幻想をぶち壊す。
> メモリ管理が間違っていて、誤った代入がされていたとしても、newで落ちますか?
相も変わらず、ぼくわるくないもん!!!か。
あらゆる参照可能なメモリにあらゆる値が存在しうる場合に発生しうる全ての現象が起こる。
電卓ソフトがメモリ破壊が原因で暴走し、突如モナリザの絵を200枚連続で
プリンタから出力することもありうる。しかもカラーで。
>>12 VisualStudio2008はりリースモードでもデバッグ情報作るからデバッグできるよ。
まぁ他人に問題解決頼むなら問題を発生させる最小のコードが必要だよね。 # とはいえそこまで出来たら後は自分で殆ど解決してしまうけど
54 :
デフォルトの名無しさん :2010/01/08(金) 00:45:37
> コーディングは合ってると書いたのは、単に質問だけすると、
> ポインタの扱いとかdeleteの失敗とかそういう初心者向けの
> コメントしか来ないだろうと思ったので、敢えて書きました。
> コーディングとは別のところで良く陥るミスとかないですか。
> 例えば、コンパイラオプションを間違えてるとか。
これはどうみても
「お前らごときが俺のプログラムの不具合を詮索ことが許されると思っているか。
お前らが思うような不具合など、俺様のプログラムに存在することなど絶対にありえない。
俺様のプログラムが完全であると認め、それ以外の不具合の原因を俺様のために追求せよ」
と言っているのに等しい。
もうね、こんな奴プログラマー失格とか社会人失格とかってレベルじゃない。
会社にいたら死力を尽くして距離を置いて、接近されぬよう逃げるべき相手。
もはや
>>44 の一番適切な回答は、「ハイソーデスネ、アナタノプログラムモンダイハアリマセンヨ」だ。
(参考文献
http://glossary.tank.jp/t0018.html )
55 :
デフォルトの名無しさん :2010/01/08(金) 08:15:19
他のPCでコンパイルしてみたら?
56 :
7 :2010/01/08(金) 08:22:33
Cで長年、生ポインタ使った経験が無いとC++を使うのは難しい
「コンパイルが通る」=「完璧なシンタックスだ」=「おれは間違ってない!」とかよくある話で。 まあ向いてないんだろうね。
main関数で他のルーチンに飛ばす部分を一切コメントアウトして適当な配列だけnewしてみたらどうなるの?
C2のコンストラクタがぶっ壊れてんじゃねーの?
アドヴァイスしてるやつも同類のアホだなw
どういう条件で落ちるのかも正確に出てないのに解決なんてするわけ無いだろう。 どういう条件で落ちるのかも正確に書けない奴のコードが正しいはず無いだろう。
メモリが破壊されるタイミングだと考えている瞬間よりもっと前にメモリアロケータの管理領域を破壊している 既に致命傷を受けていてdeleteでとどめを刺されているだけ
おそらくbuffer overrun
c[5]とか書き換えてるよね
たぶんこれで壊れるんだろ。
>>14 のコードから見て
c1 = c2;
or
C1 c1(c2);
66 :
デフォルトの名無しさん :2010/01/08(金) 19:14:47
VCでdebugモードで動いて、rekeaseモードで動かないってオレもあった気がする。 なにが原因だったかは忘れた。 これって人のプログラムを直してるの? そうじゃなかったら、最後に動いた状態まで戻せないの?
>>60 間抜けなことに、本人も「アドバイスしてるつもり」だから
余計タチが悪いよな。
68 :
1 :2010/01/08(金) 21:36:31
今日ちょっと進展がありました。 クラッシュを起こすクラスを使用するプログラムの、 落ちる部分とはぜんぜん違うところのとあるコードを変更したところ、 newやdeleteでのクラッシュが起きなくなりました。 変更したところは、その部分のテストでは特に問題なくて、 その部分でエラーが起きたこともないんですが、ちょっとその部分の コードを変えました。 すると、突然、しっかり動き出しました。 解決したと思っていいのか、よく分からないですが、 今日のところは問題は起きてません。
直したコードのところでヒープぶっこわしてたんだろ。参考までにプロジェクトの名前教えてくれ。見掛けても使わないようにするから。
よくわかんないけど動いたのでこれでいいです
71 :
7 :2010/01/08(金) 21:53:55
まあ動けばいいよ。またエラー出たときに考えればいいよ。
>>14 おまえみたいな初心者は頼むからSTL使ってくれ。
#include <vector>
class C1 {
private:
// メンバ
std::vector<int> a;
std::vector<int> b;
std::vector<C2> c;
public:
// コンストラクタ
C1( void ) : a(5, 0), b(5, 0), c(5, C2()) {}
// デストラクタ
~C1( void ) {}
public:
// 初期化メソッド
int init( void ) { return 0; }
public:
// 各種メソッド
int xxx( xxx ) { xxx ; }
};
73 :
デフォルトの名無しさん :2010/01/08(金) 22:01:14
>>72 おいおい…初心者に罠イクナイ。ここまで頭の悪い奴にSTLを使わせても
自分でデバッグできない不具合を埋め込んでゴネだすのがオチだぞ…
>>14 おまえみたいな初心者は頼むから会社もプログラマーも辞めてくれ
ちゃんと動いてるんだから黙っててください
>>74 え? 明らかに
>>1 のノーミソの不具合があるのに、
それによる観測結果が正しいだなんて誰が保証を(ry
保証なんていらないし
77 :
デフォルトの名無しさん :2010/01/08(金) 23:49:38
× ちゃんと動いている ○ 一見動いているように見える ◎ 動くか動かないか分からないが、今のところは落ちない 「ちゃんと動く」ってのと「今は落ちていない」の違いも理解できないのか?
頻繁に落ちてたのが落ちなくなったなら99%直ってるよ
別に言葉遊びしたいわけじゃないからどうでもいい ちゃんと動くもちゃんと動いているように見えるも同じ
今年はこういう白痴新人が入ってきませんように
81 :
デフォルトの名無しさん :2010/01/09(土) 00:15:40
>>78 ,79
趣味のコードならそれでいいさ。誰も困らないからね。
>>80 この手のはマジで会社の寄生虫だよな…
>>1 のように他人のせいにして
学習せず原因を追求せず30過ぎても40過ぎても
>>1 と同レベルのコードを書く。
>>81 別に
>>1 が汚いコード書こうが81は困らない
だからどうでもいいだろ。
おまえが
>>1 のコードで直接被害うけてるならともかく第三者のくせにごちゃごちゃいうなみっともない
>>81 の書き込みで被害を受けない
>>82 がごちゃごちゃいってみっともない件について
動けば良い→企業人の鑑のようなハツゲンだが、後悔先に立たず 企業内でコードを書くことは少なからず責任を伴う。 どうしてうまくいかないのか悩む→学生の鑑のような行為だが 企業内で研究開発は兎も角、勉強や学習をするのは会社法に 抵触する犯罪。こちらのほうがずっと深刻で、こういうことが まかり通っているとその会社は破滅の路を辿っていることになる。
開発だよね
>>84 つまり技術の無い奴は来るなということですね
88 :
6 :2010/01/09(土) 11:59:16
>>68 目処が付きそうで良かったね。
2chの中でもプログラム関係は本当に人を攻撃するのが好きだよね。
単発質問スレを立てた上に、言われた内容を理解できない馬鹿は叩かれて当然だけどな
91 :
デフォルトの名無しさん :2010/01/09(土) 20:27:39
異常終了の原因は100%メモリ管理なので、 メモリ管理を指摘するだけのコメントはアドバイスにならない
でも本人が ソースは見せられませんが私の書いたコードは間違っていません! VC++のバグです! それ以外の答えはお断りします! って言ってるんじゃねぇ。メモリ管理のバグがなんにせよ、問題の箇所が見えなきゃアドバイスも何もないよ
93 :
1 :2010/01/09(土) 22:32:34
仕事があまりにも遅れてるので、今日も出社してました。 今のところ、問題は再発してません。 アドバイスを下さった方々、ありがとうございます。 今回のように、newで落ちる(またはdeleteで落ちる)という デバッグが極めて難しい状況に陥った時、うまくデバッグする 方法はあるでしょうか。 しかも、今回はたまたま問題箇所が見つかりましたが、 落ちるクラスを使用する部分と全然違う部分のコードが 原因でした。 このような時にどようにデバッグするのがいいのか アドバイスをいただければと思います。 よろしくお願いします。
>>93 > デバッグが極めて難しい状況に陥った時、うまくデバッグする方法はあるでしょうか。
端的に言うと「発生させるな、レビューと実装規約で抑えろ」だ。だがお前には無理だ。
お前のように正しいと決めつける奴、つまりお前には無理だ。
絶対に正しいレビューはできない。絶対にお前には無理だ。
仕事をわざと遅らせ、残業代稼ぎの為の出社だと 会社の人は見ています。下手すると詐欺で告訴 されるかもしれません。
素人はJavaでも使ってればいいのに
C/C++コンパイラでコンパイル時に警告が出ているコード
は既にある程度バグを含んでいるとすら言える。
>>1 はこのスレを立てた段階のコードをまだ持っていれば
再度コンパイルしてみれば?
多分警告が多数出てる筈。その警告の原因一個一個潰すと
エラーの原因がわかる筈。
JavaはC++がまったくわからんって人が使うと 危険だろ
valgrindみたいなツールでメモリの不正アクセス箇所を探せばいいんじゃねえの Windowsにおけるvalgrind相当のツールは知らんけど
最近は、C++はおろかCも打てないJavaプログラマ多いだろ
>>95 俺の先輩で、数万円の残業代稼ぎに腹を立てた
アホ監査役のせいか、クビになっただけでなく
億単位の損害賠償を民事で引っ掛けられた人
知ってるんで、コードが動かないから残業しよう
なんてことはしないほうがいいんじゃないか..
>>101 俺の先輩では動かないコードを放置して有給休暇を取って
旅行に行ったらその間に勝手にリリースされちゃって
客先がそのソフトを使って事故を起こしてしまったらしく
警察沙汰(業務上過失致死傷のカドで逮捕者も出たらしい)
になったらしいから、コードが動かない、或いは問題を含む
ことを知りながら放置するのだけはやめたほうがいいと思う
ね。
>>101 >億単位の損害賠償を民事で引っ掛けられた人
損害賠償請求権等不存在確認請求訴訟を起こすべきレベル
で敗訴したら名誉毀損という刑事訴訟法上の犯罪になると...
結局サー残するのが一番マシなんですね…
このスレまだあったんだ
107 :
デフォルトの名無しさん :2010/01/10(日) 14:28:41
どう直したかを知りたい
今は日本語不自由な給料安く働いてくれる中国人のほうが 自称プロよりよっぽど良い。 日本人はよっぽどスキル高くないと雇われん
>>108 それ以前にどういうバグだったのかを知りたいわ。
こんなエスパー相手にしているようなスレ立てるやつにプログラム書けるわけない。
日本人の未経験者に払う安い賃金のさらに半額未満で 情報工学の修士が雇えたりする
いや、もともと 1 は自分のコードが正しいとか言っているので、 特にプログラムなんかいじってなくて、 別のメモリーがたっぷり積んであるマシンで動かしたら落ちなかったとか、 メモリ常駐のプログラムを増やしたり減らしたりしたら落ちなくなったとか、 そういう話なんじゃないかな?
使えるかどうかは...
114 :
デフォルトの名無しさん :2010/01/10(日) 17:04:06
>>45 情報処理うかったくらいで一流プログラマの仲間入りしたつもりなら大間違い。
あの文章のどこからそんな慢心が読み取れるのだ
その文章に限らず > コーディングは何度も何度も見直しました。 > 間違っていません。 これほど傲慢な質問者は他にいない
117 :
1 :2010/01/11(月) 01:35:23
>>94 バグを発生させなければいいというのは確かにそうですね。
勿論その努力をすべきだと思います。
ただ、それでもバグが起きてどうにもならなくなった時
どうするのがいいでしょうか。
>>95 ,
>>101 うちの会社は残業代出ませんので、そういう問題は起こりません。
>>97 いえ、警告は一切なしです。常々、私は警告であっても、必ず
対処するように心がけています。いつも、警告なしでコンパイルを
通ったコードで異常終了するバグに悩まされています。
118 :
1 :2010/01/11(月) 01:37:18
>>107 ,
>>108 ,
>>110 全部話すと長くなるのですが、今回の開発は私とSさんで分担して
やってます。私がライブラリを作り、Sさんは私の作ったライブラリを
使って実行プログラムを2つ作ります。
私の作ったライブラリのクラスC1のコード内のnewやdeleteで異常終了
する不具合が見つかったのは、もう3ヶ月くらい前のことです。
もともとは私の担当しているコードで異常終了したため、問題は私の
コードにあるのではないかと思い、何度も何度も見直しました。
単体テストでは問題なく、コードレビューでも問題なく、まったく
異常終了の原因が見当たらなかったのです。
なので、Sさんの方に問題があるのではないかと思い、Sさんに
原因調査を依頼しましたが、何だよバグはお前だろみたいな感じで
あまりやってくれないので、時間が経ってしまいました。
確かに、私のコードで落ちるので、私も、再度、テストし、コードも
見直し、何度も何度もチェックしたのですが、問題はなく、Sさんの
コードに問題があるのではないかと言うと、お前のコードで落ちるん
じゃないか人のせいにするのかよみたいな感じで、まったくデバッグが
進みませんでした。
119 :
1 :2010/01/11(月) 01:38:26
そのままずるずるしてしまったのですが、Sさんに原因究明をお願い してもまったく進まないので、一緒にやることにしました。 debugビルドで動き、releaseビルドで異常終了。printfデバッグでも 原因が全く掴めない状態で困難を極めました。とにかく、私は、自分の コードはもう間違ってないと思っていたので、実行プログラムの ソースコードを直さないとどうにもならないと思っていました。 実行プログラムは2つありますが、問題はその片方だけで起こります。 なので、実行プログラムの方に問題があると私は尚更思いました。 そこで、問題の実行プログラムのソースコードの各所をコメントアウト するかそれが無理なら無害なスタブに置き換えてテストしてもらいました。 というか、一緒にやりました。ふざけんなよまだおれを疑ってんのかよ お前のコードで落ちるんじゃねぇかみたいな雰囲気のまま、強引に やりました。すると、ある部分をコメントアウトしたら異常終了しない ことが分かりました。その部分は、異常終了するクラスを使う部分とは 全く別の所で、想像もつかないような所でした。 私はその部分のコードを見直すようにお願いしたんですが、 これもなかなか進まなくて、コードを変えろと言っても、 forをwhileにしたり、ちょっと行を入れ替えたり、式の形を変えたり して持って来るので、私がコードレビューして、ちょっと気になる ところがあったので、ループと分岐の作りを変えてもらうと、 異常終了が起こらなくなりました。 なので、その部分のコードにメモリを破壊する何らかの原因があったん だろうと思っています。
コンパイラを変えてやってみた? GCCやらBCCやらDMCやらいろいろあるだろ?
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものではありません。 アイと研究員とのやり取りに利用するスレッドではないので、 関係者以外も書きこんで下さい。 京都大学霊長類研究所
ループの回数が間違ってたとかそんなとこだろ。<=を<で書いたり
これ、職場の人間関係的には迷宮入りした方がうまくいきそうだな。
赤の他人にこの程度の情報でバグ出しをお願いできると思っているヤツなんだから、 職場の同僚にどういった頼み方をしたのかは推して知るべしだな。
兎に角
>>1 はこれだけ世間を騒がせた以上、業務上の守秘義務が
ある箇所を削除して、コンパイルは通るが同様のエラーが
発生するコードをupすべき。
ここの連中が必ず真の原因箇所を突き止めるだろうから。
本当にVCのバグだとしたら、結構怖い話になってくる。
Windowsマシンを基幹システムに繋げるなって話にも
繋がってくるし..
127 :
デフォルトの名無しさん :2010/01/11(月) 07:53:18
初めて書き込みます。 デバッグ版で動くという事は基本的なコードの誤りは無いのでしょう。 リリース版のみで異常終了し、トレース文などを入れると終了する場所が変わったり正常動作するというのは何度か経験があります。 原因は28の人が書いてあるとおりだと思います。 例えばこんな感じ long CalcArraySize(long& lArraySize); // 宣言 (略) long lArraySize; // すぐにCalcArraySizeで値が設定されるので初期化しない CalcArraySize(lArraySize); // ここで配列の必要サイズが取得されるはずだが、エラーだと不定値のまま m_pClass = new CMyClass[lArraySize]; // 万が一lArraySizeが不定値だと異常終了するかもしれない オート変数でも宣言時に初期化すればデバッグ版とリリース版で挙動が異なる事は少なくなるはずです。 でも今更全ての変数に初期化文を入れるなんて現実的じゃないかもしれませんね。 P.S. 複数のDLLを使用するアプリで、デバッグ版とリリース版のDLLが混合しているとかないですよね? そういうのが考慮された造りなら問題ないけど、何も考えていないとメモリの取得や開放で異常終了します。
129 :
デフォルトの名無しさん :2010/01/11(月) 08:04:40
>>117 な?やっぱりお前には無理だろ。
リーク系の不具合は追跡困難だから発生させるな。
だが、お前みたいな奴には発生を未然に防ぐことなんてできない。
お前には無理だ。
>>127 >基本的なコードの誤りは無いのでしょう
いやその例、完璧にコードの誤りだし。
DebugとReleaseで挙動が違うのは、よくある「間違ってるけどたまたま動いてしまっている」って奴だろ。
それにしても、
>>1 みたいなくだらないバグを3ヶ月も放置しても平気なんて、
世の中オレが思っているより平和なのかねえ。
そして、これほどの低レベルの奴らが平気でCやC++という危険な言語を触っていることに戦慄するよ。
オレが社長ならこいつらは当分LLしか触らせないけどな。
社長なら首にしようぜw
俺が社長なら能力不足を理由に首にしたうえに人事部長を懲戒するレベル
そして安く働いてくれる優秀な中国人労働者を雇う
135 :
デフォルトの名無しさん :2010/01/11(月) 10:55:22
どうみても
>>1 の頭と性格が悪いじゃん。
いきなり
>>1 で「コードは絶対正しいんですぅ!」
解決しても「ぼくの書いたコードじゃないんですぅ!ぼく悪くないんですぅ!」
終始責任逃れに徹して、二束三文の自分のプライドを守ることに執着している。
これによりスレでメモリ破壊を指摘されてもなおも解決できず、時間を無駄に費やした。
さらに俺がSの立場でも、
>>1 見たいな責任の押し付け合いをするクソ野郎相手には
「何だよバグはお前だろ」「人のせいにするのかよ」っていうわ。
たとえ自分のコードの不具合であっても、足手まといには無駄な作業をさせた方が全体にとって利益だからな。
>>1 みたいな奴が開発チームにいたらPM権限発動して隔離部屋で個人作業させるわ。
頼んでも調査しないSが悪いだろ
137 :
デフォルトの名無しさん :2010/01/11(月) 11:08:34
Sが悪い、なんて判断は早計だ。
このスレの人には
>>1 が
>>1 の立場で書いた情報しか与えられていないのだから。
そして
>>1 が他人に責任を押し付けるような奴だってのは周知の事実。
確実に
>>1 にとって都合の悪い事実が捻じ曲げられている & 隠蔽されているだろうな。
技術的な話が終わったなら、sage進行でお願いできますでしょうか。
そうはいくかい
>>118 > なので、Sさんの方に問題があるのではないかと思い、Sさんに原因調査を依頼しました
原因がどちらにあるか切り分けもせず「俺は悪くないからお前のせいだろ!」なんてそりゃ誰でも調査を断るわw
コーディングが正しくて、プログラムが正しく動かないという事は、コンパイラが間違っているのだろう。 お前の責任じゃないから、コンパイラが悪いと主張すればクビにはならないよ。
でもSさんも自分のコードに問題が無いと思ってる糞だろ
でも
>>1 みたいなアホに「俺のコードは絶対正しいだ。お前のコード間違っている」って言われたら
お前らだって「お前のコードが正しいはずないだろボケ!」と答えるだろ?
でもライブラリ単体でエラーでないんだったら見てやるのがSだろ まったくダメなSだ
>>1 がSに責任転嫁するために書いた情報でSが悪いと言っている人たちって…馬鹿?
コンパイルが通る = 正しいコーディング だと思っている時点で頭がおかしい
int x; int* p; p=&x; p[10000]=500; これもコンパイルはとおるな
>>1 が正しいと言っているのだから疑ってはいけない。
149 :
デフォルトの名無しさん :2010/01/11(月) 17:22:55
そうだそうだ
俺ならSみたいなやつは切る
151 :
デフォルトの名無しさん :2010/01/11(月) 17:52:20
>>147 それはデバッグ版でも動かないだろう
デバッグ版では動いてリリース版では動かない理由を考えないと
p[1]ならDebugで動くんじゃない?
ちょうどデバッグ用に取られた領域を書きつぶしてて実行できたんじゃないの
デバッグ版とリリース版でメモリの初期化状況が違うんじゃねーの? 変数はちゃんと初期化してからつかおーね
デバッグ版は未初期化のところはフフフフで埋められるからな。 char s[100]; printf("(´ー`)%s", s); ↓ (´ー`)フフフフフ…
>>126 前々から噂にはなっては消えてる話だろ?
VC(.NETになる前)のmalloc辺りに問題があって
alloc/deallocを数十億回繰り返してフラグメンテーションが
発生すると落ちる場合があるって噂
嘘くさいと思ってる(メモリデフラグソフトがデビューしだした
頃の噂だから)
>>156 ネットがADSLになって普及した2000年代前半の頃
盛んにホットフィックスが行われたが少なからず
メモリ周りのセキュリティーホールフィックスが
行われたらしいがその際にバグが混入したとかしなかった
とか聞くね。そのせいかどうか知らんが、ウチの会社では
端末も基幹もWindowsだけど、端末から基幹のほうには
telnetでしか接続出来なかったりしてる(端末はしっかり7
が入っているが、基幹は未だにWindows NT4.0 Server )
もう少しまともな改行しろ
そういえばメモリのデフラグってだれがやってるの? 勝手にスワップしてデフラグされるの?
>>159 ここでのフラグメンテーションは、プロセスメモリ空間上での
話で要するにmalloc/freeなどのライブラリヒープマネージャー
が管理する情報が混乱した状態になる事だろ。
VCみたいなメイジャーなコンパイラとかじゃまずありえないん
じゃね?
俺が気にする必要は無いってことですね?
>>161 否、気にすべきで、コード記述に便利だからとか奇麗だから
という理由だけでC++とかで安直にクラスの下にクラスを
何層にもぶら下げてるような設計にしてたりすると
new/deleteの回数が増えて、ヒープマネージャに負荷がかか
って、デーモンとかサービスのように途中終了する機会がなく
長時間動作させるようなアプリではシステムによっては、
パフォーマンスが突然滅茶苦茶落ちてフリーズ状態になる
可能性がある
と昔、習った。
>>162 可能性があるだけですね?
どのみちWindowsUpdateで再起動するし問題ないですね
164 :
デフォルトの名無しさん :2010/01/13(水) 03:04:33
>>157 >telnetでしか接続出来なかったり
セキュリティも糞もねぇなw
>>159 何をトンチキなことを…
アプリケーションがポインタ直接保持してんのに
勝手に移動されたらどーすんだよ。ハンドルならいざ知らず。
167 :
デフォルトの名無しさん :2010/01/13(水) 06:01:25
今や SSHは敢えてTelnetと区別しないだろ PuttyとかTera-SSH使っているとでもいいたいんだろ
>>167 区別するっつーのwどういう職場なら区別しないんだ。
telnetはtelnet。sshはsshだ。
TelnetクライアントのSSH通信対応版も Telnetと区別しないで伝統名称Telnetと 呼ぶ職場も多いね。 んなことよりもソース晒さないの?
170 :
1 :2010/01/13(水) 22:03:16
出張していたため、暫く2chできませんでした。
>>126 ,
>>164 申し訳ございませんが、コードのアップは控えさせて下さい。
それに、今回の問題の本質は、コードがどうだったかよりも、
異常終了するコードの箇所と全く違う部分のコードが原因と
なっていることもあり、そのような場合にプログラマはどう
デバッグすればいいかと言うことだと思います。
>>127 ,
>>151 デバッグであってもリリースであっても、動かない場合は
基本的にはコードに問題があると思っています。変数の
初期化や配列インデックス値の不正はよくあるミスです
ので注意しています。デバッグ版の場合はデバッグ用の
領域が広くとられているため、バグが表面化しない場合が
あるということなんだろうと思います。
>>128 どう糞なのか教えてください。
14で示したコードはnewやdeleteで落ちるものだから、
その部分の概要が分かるように簡略化して書きました。
それとも、STLやスマートポインタを使ってないことが
糞なのでしょうか。
コードもきちんと検証せんとまた同じ事繰り返すかもしれんよ?
自分で正解にたどり着けたんなら「なぜそれを最初に行わなかったか」それが君の課題じゃないの 言い訳するなら俺らに対してじゃなく会社にすべきだよね。まあどうでもいいけど
>そのような場合にプログラマはどう >デバッグすればいいかと まともな人ならちゃんとデバッガ駆使します。
>>1 Windowsマシンは安価故、大量生産されて世のPCの95%以上がWindowsマシンであることは一般常識であることは言う迄もない
が、それらは決定的に重要なところに使われているわけでもない
が故に、バグがあると影響がゆっくりと現れて、数が多いが故に
中々取れないんで、バグの存否情報は大きな社会問題に発展する
可能性を秘めている。
会社と君の関係の問題も重要だがWindowsの重要なライブラリの
バグではないかという主張を公開ネット上で一つのスレを使って
主張した以上、多少時間がかかってもいいからその状況を可能な
限り忠実に再現できるファイルセットをアップして真相が決定で
きるようにして欲しい。もちろん君がどの会社のどの部署に
所属しているのか絶対にわからないように変数や関数の名前を無
意味な英数字にするとかそういう工夫は必須だしそうしても貰わ
ないとこの板の住人にも迷惑がかかる。
175 :
デフォルトの名無しさん :2010/01/14(木) 08:31:07
> STLやスマートポインタを使ってないことが糞なのでしょうか。 知識の不足なんてさして問題じゃない。 察しの良い奴ならすぐに学習するからな。 メモリ破壊を指摘されても「僕悪くない!!」に徹した 技術屋としては最低最悪な外道だから糞なんだよ。
>>175 コードの話をしてるんじゃなかったのか?w
ここまで読んでみましたが、ライブラリというより、呼び出し元が原因ぽいんですよね。 どういうことをしていて、newで落ちてたようだ、ということだけでも書いていただければ、勉強になるんですが。 はっきりしないんでしょうかね。
>>170 >>14 のコードをC++風に書くとこうなる。
このコードはメモリーリークも多重deleteもメモリ不足も例外も解決する。
template<class T>
class array
{
private:
T* buff;
array(const array&);
public:
explicit array(T* b):buff(b){}
virtual ~array(){delete[] buff;}
T& operator[](int index){return buff[index];}
const T& operator[](int index)const{return buff[index]:}
};
class C1
{
private:
array<int> a;
array<int> b;
array<C2> c;
public:
C1():a(new int[5]),b(new int[5]),c(new C2[5]){};
//各種メソッド
int xxx() ....;
};
q
STL使わずに書いてみた。
>>184 STL版のサンプルよろしく
>>181 メモリリークする。
多重deleteが防げてない。
例外も防げてない。
メモリ不足?
あーあ可哀想に C++BuilderならCodeGuardで一発なんだがな どうせDebug版にもバグあるよそれ それがRelease版で顕在化しただけ
Cはよい言語だ。アセンブラよりずっと簡単に書けるのに、アセンブラよりそれほど遅くない。 C++ with STLも悪くない。Cよりずっと簡単に書けるのに、Cよりそれほど遅くない。 だいぶコードサイズが大きくなるけどな。 だが、C++ without STLは最悪だ。そんなものを使うくらいなら、別の言語を使ったほうがマシだ。
それ読む限り C++ With STLが一番じゃん。 昔みたいにCPUもメモリも貧弱だったならともかく CPU高速メモリあまりすぎの現状速さなんてたいして問題にならん。
世の中メモリもディスクも無限にあるマシンばかりじゃないのだよ。 DSやPSPでSTLバリバリのコード書いたらすぐにメモリはパンクしてしまう。
>>191 組み込み環境の事も忘れないであげてください。
何?Embedded C++に喧嘩売ってるの?
取り敢えず
>>1 の返答待ちと言う事で.
WindowsのVCコンパイラが生成した正当なプログラムが
ライブラリの未発見のバグで突然オチることがあるという
のが本当なら結構なニュースバリューがあるし...
>>1 は
発見者として大感謝されるかも...
198 :
デフォルトの名無しさん :2010/01/15(金) 08:39:58
ちょっと視点を変えようか。 プロジェクトの設定による違いって事は無いかな?
バッファオーバーランに設定も何もないと思うけど
201 :
1 :2010/01/15(金) 23:23:02
>>174 ,
>>197 私は、Windowsにバグがあると言った覚えはありません。
落ちる部分のコードを何度見直しても合ってるのに
それでも異常終了するという症状に困っていると言いました。
実際は、クラスC1を使うプログラムの、クラスC1を使う
部分と全く別のコードが原因でした。
WindowsあるいはVCのバグではありません。
動的確保する用のポインタをクラスに持ってるのに コピコンを書かない理由がわからない
>コピコンを書かない理由 「コピーすることがないから」は立派な理由だろう。
>>201 もう最適化やめちゃいなよ
#pragma optimize("", off)
>>203 その場合、書かない(=デフォルト)のではなく、privateかリンカエラーにするんじゃないか?
>>203 privateなりにして作っておかないとコンパイラが勝手にpublicで作るよ。
そして誰かがそのオブジェクトのコピーをして死ぬほどめんどくさくなると。
operator=も同上。
コンパイラにバグがある事はまずない(あっても大抵全て既知の問題) もし問題が再現する最小のプログラムが書けたらコンパイラメーカが 修正してくれる可能性は大いにあるが、そうでなければ無視される
208 :
デフォルトの名無しさん :2010/01/16(土) 09:28:21
>>97 > C/C++コンパイラでコンパイル時に警告が出ているコード
> は既にある程度バグを含んでいるとすら言える。
そこまで言い出すとオープンソースなんかほぼ全滅だろ。
オプソはシステム抽象化、標準化が行き着くところ迄行っている UNIX環境の最大の強み。非純正開発環境でmakeして当然出てくる ワーニングを無視しても殆どが遜色無く動くからオプソが成立 しており膨大な数のソフト資産が形成されてる。
>208 まともなプロジェクトならウォーニングはほとんど出ないよ。 オープンソースの場合は、「動けばいい」じゃないから。
boostはまともなプロジェクトじゃないんですかそうですか
>>211 boostは完全C++準拠
boostで警告が出るならコンパイラの問題
213 :
デフォルトの名無しさん :2010/01/16(土) 13:10:49
>>212 お前はGCCが糞だと言うのか。
だったら何を使えと言うのか?
215 :
10 :2010/01/16(土) 15:02:23
>>212 boostはコンパイラのベンダ拡張使いまくりですけど。
それで、VCもICCも警告でまくりですけど。
216 :
デフォルトの名無しさん :2010/01/16(土) 20:46:35
201の発言をみて怖くなった。 この人は原因を把握しているのだろうか? 「落ちなくなったから正常に違いない」なんだろうか? 今までは「潜在的なバグがあるが偶然デバッグ版で動いていたがリリース版では動かなかった」で、 今は「潜在的なバグがあるが偶然デバッグ版でもリリース版でも落ちない」ではないだろうか? 最後に聞かせて欲しい。 不具合の原因はなんだったの? 初期化漏れ? コードの誤り? 「全く関係ないところを直したら落ちなくなりました」は原因じゃないですよ。
debug版だと勝手に初期化されてたまたま動くことがあるね release版で死ぬなら初期化漏れかあるいはメモリ破壊だろ
ライブラリ作成が仕事でも自分の作ったライブラリをテストランするプログラムぐらい書くよな?
いくらテストランしたところでメモリ壊されたら対処のしようがないよね
Sさんのプライドを守ってあげるような言い方で協力を要請すべきだったな プログラム云々より人間関係の信頼構築に失敗している
プライド?ヘボグラマの癖にプライドも糞もないわい
プライドなんか関係ない。認めざるを得ない証拠を突き付ければOK
ボンクラの
>>1 にそんなことができると思って(ry
そもそもSの書いた部分に原因があるとも、直ったのかどうかすら分からない。
しかも
>>1 はSに責任を擦り付けるためだけの情報しか書いていない。
Sのコード直したらたまたま直ったってだけで
>>1 のコードはまだ白じゃないだろ
何ヶ月も同じところで躓いたまま進まないことってあるのか
少なくともnew/deleteではありえない。その前にクビになる。
>>225 そんだけボンクラなんだろ。両者とも。
そんなことが許されてるからボンクラなままだとも言える。
以前あるプロジェクトで
>>14 みたいなコード書いて関数に値渡してたバカがいたよ。
そいつも一週間は格闘してたな。しかも露見した時の言い訳がひどかった。
参照渡しにするのを忘れたとか何とか。
コピー代入禁止にしとけばすぐに発見できることなのにな。
まあ
>>1 が同じ事してないことを祈るよ
ボンクラ再生産 ボンクラ(ボンクラ&) ボンクラ operator = (ボンクラ&)
230 :
1 :2010/01/19(火) 19:58:17
>>14 のコードが糞だという意見がとても多いですね。
どう糞なのでしょう。
大半の方はSTLやスマートポインタを使っていない
から糞だといっているようです。
>>228 の方は「
>>14 みたいなコード」(ダメなコードの意味だと思いますが)の
何がダメなんでしょうか。
231 :
デフォルトの名無しさん :2010/01/19(火) 20:52:13
コピーを考慮しないからじゃないですかね。
>>230 何がダメって理由書いたつもりなんだが…
void Test( C1 c ){}
int _tmain(int argc, _TCHAR* argv[])
{
C1 c;
c.init();
Test( c );
return 0;
}
露骨にコピーや代入やってもいいけど、まあ一応
>>228 の例
C2に空クラスでも実装すりゃコンパイルできるだろ
それと各種メソッドとかいうC1::xxx()をメンバ(a、b、c)にアクセスするように実装して
Test()とreturnの間でC1::xxx()を呼び出してみな
VCならそっちの方がわかりやすいメッセージが出るだろ
何が起こるか予想できるよな?
>>230 初期化子を使ってないとかnew失敗でNULLが返ってくる前提とか
初期化メゾットをコンストラクタで呼ばないとか
さんざん言われた設計だけでなく実装段階でもクソだ
>>1 がソース晒さない限り、VC++のバグということで..
また 都 市 伝 説 が一つ増えたというわけだ。
クソみたいなコードを量産する前に、 せめてEffective C++ぐらい読んどけ
237 :
デフォルトの名無しさん :2010/01/20(水) 21:50:18
>>232 デバッグ版で動いてリリース版で動かない例にはなってないな
>>230 > 大半の方はSTLやスマートポインタを使っていないから糞だといっているようです。
アホすぎる。何が悪いと言われているのに理解できないお前のノーミソなど
味噌糞一緒くたにしてしまえ。そのノークソが一番糞だ。
たまにいるよな、これぐらい酷いアホ。
自分が理解できていないことを理解できないアホは救いようがない。
>自分が理解できていないことを理解できないアホは救いようがない。 世の中の殆どの人間がそうなんだが
>>1 なんか騒動になってるぞ。株式市場とかにも影響してくるから
釈明の意味でソース晒したほうがいいんじゃね?(情報漏れは
無いようにな)
>>241 おまえがその騒動とやらのソースをさらせよ
この手のスレはチンパンジーアイちゃんが出てから10程度 でオチるのが常。 しかしこの伸びは異常。やっぱし何かあるからだろな。
なんかの手違いで.hと{.obj|.dll|.lib}の不整合が起きてたと予想。 .objや.lib内ではnon-virtualなメソッドが最新の.hではvirtualになってたみたいな。 プリコンパイルヘッダの仕組みを理解せずに使ってたとか、 同じ.hに依存する2つのライブラリのビルドの整合がとれてないとか。
245 :
デフォルトの名無しさん :2010/01/23(土) 01:51:42
れすみないでかくけどはいれつのきょうかいこえてかきこんでるときに にたようなしょうじょうおこるよね でばっぐだとあいだにまーじんとってくれるからもんだいおきなかったりするし printfいれるとうわがきされるいちがかわるからばぐはっしょうするし はいれつをじさくarrayにおきかえてoperator[]じっそうして きょうかいちぇっくやったらだいたいつかまるきがする
>>233 >設計だけでなく実装段階でもクソ
意味不明
「リゾット」あるいは「メゾネット」なら知ってるが、「メゾット」は俺も解らない。
おまえらドSだな
250 :
デフォルトの名無しさん :2010/01/24(日) 20:02:24
チンパンジーが何で関係あるの?
チンパンジー
>>1 ですが
やっぱりコンパイラのバグだと思います。
Oilly Debugとかなんとかいうツールで生成コードを
見せてもらった至る所で違ってました
それならMSに報告しておいてくれ 次のバージョンでは直してもらえるかもしれない
次はムリ。次の次だな。
>>1 VCなどのコンパイラに感染するウィルスがあるって噂
を聞いた事ががあるんで、ウィルスチェック。
そんじょそこらのウィルスチェッカーじゃ弱くて
OSをインストールした直後で一切ネットに繋げていない
状態で、インストール元CD−ROMのパッケージを全部
こじあけてHDに展開して、すべてのファイルについて
MD5をとっておく。
(MD5データのみUSBメモリに保存しておく)
開発マシンの同名ファイルのMD5を取って比較する。
出来ればMD5だけじゃなく他のその手のチェックサム
を合わせて取って比較チェックしたほうがいいかも
このバグ既に報告済みだから
その生成コードとやらの掲載よろしく
258 :
デフォルトの名無しさん :2010/01/31(日) 22:55:15
259 :
デフォルトの名無しさん :2010/02/02(火) 07:18:39
この手のバグは配列(ポインタ)のインデックス不正で起こることがとても多い。
>>259 本当はそうかもしれないけど、他人のコードがおかしいとケンカ売っている以上
もう、「ごめん、僕のミスだった」じゃ済まない。
だから、コンパイラのエラーにするしかなかったんだと思う。
特定のコンパイラだと運よく動くなんてことはままあるのだけど。
再現コード込みで文句言えない時点で騒いでる方のミス。 と俺は思ってる。 本当に問題あるのなら食わせたソースと吐いたアセンブラ突き合わせて説明できるはず。
アセンブラは吐かないだろ…
コンパイラのバグだったらアセンブラ吐かせて説明できるはずってことでしょ
264 :
1 :2010/02/03(水) 00:08:18
随分日にちがたってしまいました。
アクセス規制にかかっててずっと書き込めませんでした。
ちなみに、
>>252 は私ではありません。
あと、皆さんのコメント見ててちょっと思ったんですが、
クラスの値渡しってまずいんですか?
そういうプログラムを普段書かないから分からないんですが、
>>264 値渡しは出来る(と思う)が、当然だがクラスへの変更操作は
呼び出し元には反映されないので、同一オブジェクトへの2つ
のバージョンが出来てしまうことになり多くの場合に問題が発生する
ので、通常はポインタ渡しにする。
VCの場合、プリコンパイルドヘッダ周りが結構悪さをして
予期せぬ不具合を作る場合がある。ビルドする際には
面倒でも中間ファイルを削除する習慣を付けたいもの
(その代わりビルドの時間が多少犠牲になる)
またVCバグ説w
>>264 コピー&代入がおかしいって既に数人が指摘してんじゃん
>>264 コピー、代入がしっかり設計されているクラスならば値渡しは問題にならない。
ただ効率の問題が別にあるがそれ自体はバグではない。
おまえの作った
>>14 のクラスをコピーや代入するとバグる。値渡しはその一例にすぎない。
二重deleteでヒープを破壊するからな。
もしお前がコピーや代入をたまたましていなくて問題がなかったとしても
>>14 のクラスを他人が使う可能性があるとしたらやばいな
まあ他にも複合的な問題はありそうだけどな
なんでコピーコンストラクタや代入演算子を自前で書かないのかわからない クラス内でnew/de;eteするクラスは自前で書くのが当たり前だろ
>クラスの値渡しってまずいんですか? こういうレベルの人に C++ コードを書かせる時点で間違い
入門書レベルの質問じゃね?
あくまでも自分は悪くなく、コンパイラのバグだと言い張る奴は いつまで経ってもバグが取れない
永久にとれるはずがない。 そいつが開発をしていること自体がプロジェクトのバグだからな。
「よくわかんないけど動いたのでこれでいいです」 これで許される環境がウラヤマシスギルw
まあ、許されてしまう所にいた結果、こんなことに なってしまうんだろうなあと思う。
俺が上司なら、上を説得してそいつのコード全部を廃棄するレベル。
絶対に許さないよ
値渡しがコピーを発生させてしまうことを知らない いや、そもそもコピーコンストラクタと代入演算子を知らないんじゃね?
もっと恐ろしい奴は、起こることを知っていても
それがどういう意味を持つのか理解できない奴。
確実に
>>1 はその類。
自分でnew/deleteせずにstl使ってれば デフォルトのコピーコンストラクタと代入演算子で上手く行くのにね
えっ
>>280 こういう中途半端な知ったかが、プロジェクト内に害悪コードをまき散らす。
「C++はポインタがあるから不安定」とか抜かして Java/C#を使ってぬるぽで頭を抱えている奴と同類だなw
問題の原因を追求せずに回避策ばかり論じる奴もバグの温床
>>280 が何を言いたかったのかさっぱりわからない
多分このスレの頻出単語適当につなぎ合わせてそれっぽい文章をつくるスクリプトだよ
このスレなんでこんなに人気あるんだ?
ぬるぽの方がマシかと
>>290 そんな。ソース出したら間違いが分かっちゃって、先輩のせいにできないじゃないですか!!!
もう、コンパイラのせいでいいんです。
>>14 でC1のインスタンスを値渡ししちゃったんでしょ
293 :
1 :2010/02/11(木) 17:18:44
ここの方々の書き込みのお蔭でだいぶ勉強になってます。 ありがとうございます。 コピー、代入に話が集中してきていますが、 今回の不具合とは関係ないです。 クラスC1がコピーできないのはその通りえすが、 コピーや代入を前提としてないので大丈夫です。
ソース無しで議論させるの?
コピーや代入は前提としてないので(キリッ
>>293 あんたプログラムやめて真剣に他の生き方を模索した方がいいと思うよ
>前提としてないから大丈夫 じゃああらゆる不具合も前提としなければ大丈夫
値渡ししたらコピーが発生するんだが
もう放っとけよ こいつがどうなろうと俺には全く関係がないし
>>301 でも、実際、ある日突然新米プログラマーが
「2chであなたのプログラムがおかしいという結論になった」
とか言いがかり付けてきたときのケーススタディにはなると思うよ
そもそも値渡しなんか使わない 普通はポインタか参照を渡す
他人のコードまで制御できるか? できるなら実装で禁止するべきだし、そうでなくてもドキュメントに書いて仕様とする必要はあるだろ
コピーコンストラクタと代入演算子が使えないようにしとくべきだとは思います
noncopyableただしmovable
値渡ししてるのかしてないのか知らんけど 何らかの暗黙のコピーが発生してるんじゃないかって話じゃないのか? 前提としてないから大丈夫って答えからするとまともにチェックしてなさそうだが オレも実装で禁止すべきだと思うよ。 他人が誤使用してしまったら終了じゃん
>>304 他人が誤用しないようコードで抑えるのは当然として、
他人のコードであろうとコードレビューで品質を抑える。
レビューですら抑えられないレベルのバカのコードは黙って捨てる。
まぁそもそも
>>1 の言っていることだから、本当にSが原因だとは限らないがなw
どうやって禁止するの?
access specifierで禁止する。
大元のバグの原因になっているクラスのコピーコンストラクタと 代入演算子さえ正しく書けば動くんじゃないの?
コンストラクタ&コピーコンストラクタ&=オペレーターで 全メンバを 順次 初期化は基本中の基本
boostにnoncopyableなんてあるのな
>>313 必ずしもそれは使わなくてもクラスに次の3行
private:
A(const A&);
A& operator=(const A&);
を付け加えるか(もちろんAは実際のクラス名に変更)これを継承すれば
コピー不可能になるよ
可読性が高いのはどっちかね
boostを使えない現場では
>>314 のようなテクを使うしかないだろう
仕事でboostが必ず使えるとでも思っているのか?
あああともう一つ
>>314 だけを入れたクラスをnoncopyableという名前で宣言しておき、
これを継承すればboostと同じ事になるから可読性が下がるという
事はない
俺は生が好き
ライブラリやフレームワークが提供するものを指して 自前で用意するっていうのか?
boost脳はいいかげんにしてほしい
じゃあはやく0x使わせろよ
>>320 んなことないこたない。
一段階余分なものがあると、それを知らない奴はその内容を調べないとならないだろ。
手間がかかるわけじゃなし、
>>314 が最良だろ。
>>314 だと、「こんなのあるからコピーができないんだ!」とかいって、
いつのまにか誰かに修正されちゃうかもしれないだろ。w
C++を使うのが間違い C#かJavaを使うべし
>>326 マジで派遣にそれをやられたことがある。
「事前条件チェックするな!実行したら落ちたろ!」と逆ギレされたこともある。
「constなんて使っているバカは誰だ!コンパイルが通らないだろボケ!!」には参った。
仕組みとして防ぐのがベスト、しかも明示的に書くのが理想だが、残念ながらアホには通じないw
随分態度のでかい派遣だな
アホっていうか 派遣にしろプログラマにしろ そんな危なっかしいのはとてもじゃないけど雇ってられないな フレームワークやシステムの思想を独断で破られるとか後が大変だぞ、、
>>324 Noncopyable という名前を見て意図を察することのできない奴はよっぽどの痴呆
万が一コードを見に行ったとしても20秒で読み終わるぞ
似たようなコード片をあちこちにばら撒くよりはミスの可能性が減るし、やっておいて損はない
boost脳はいいかげんにしてほしい
>>331 お前は、ファイルの場所も内容も知ってるから20秒で終わるんだよ。
ほんのちょっとコードを加えれば、明示的にコピー禁止なクラスになるし、プロジェクト内で コピー禁止なクラスなんて数個くらいだろうに、なんでほんのちょっとコードを加えるのを 嫌がるのだろうか。 そもそもC++はMix-in的なものはなじんでないから、Noncopyableに限らずいくつも多重継承 されてると、はてなと思ってしまう。
自作クラスのメンバ変数にポインタを使うようになったら 半分バグってると思って扱ったほうがいい
えっ
なんでnoncopyable程度の簡単な抽象化すらサボって全部手書きしたがるの? マゾ? プログラマなんて労力を省いてなんぼの商売でしょうに。
boost使えなかったり、なんかの理由でに使わない場合だってあるでしょ
「なんでNoncopyable程度の簡単なコードすらサボって抽象化したがるの?」 でも成立しそうな気がした。
>>337 privateに決まり切った二行を追加するだけだろうが。
Noncopyable使う場合もinclude文と継承部分の変更が必要で、合計二行の変更が必要。
どんだけ労力変わるんだよ?
noncopyable継承でオーバーライドを防げるの?
みんなアホすぎて話にならん。 noncopyableを使うメリットは、クラスの宣言全部を見ることなくそのクラスがコピー不可だとわかること。 privateに追記派は、クラスのコメントに「コピー不可なクラス」とか書いちゃうわけ?
誤ってコピーを誘発させる記述をしてしまった時にコンパイルエラーが
引き起こってくれればいいわけでどっちでも構わないけどな
まあ、値渡しで何が起こるかわからないとか、コピー禁止の方法を知らないとか、
そういうのがこの上のレスだけでも散見できるわけで
noncopyableがあれば一目瞭然というほどの知名度はなさそうだけどな
>>341 final属性か何かと勘違いしていないか?
344 :
1 :2010/02/21(日) 17:57:36
バグは取れておらず先週サーバーとして動作していた アプリが突然落ちて、DBマスターを壊したみたいで 大騒ぎでした。で、金曜日についにM$社の担当者が 呼び出されていました。ソースを渋々見せながら状況 を上司が説明したところ、結局担当者にも原因がわか らなかったようで、「どうか御内密に」という意味で しょうか、ずっしりと重いキャスター付き旅行用スー ツケースを置いてきました。あの中には何が入ってい たのかは大体想像がつきますが、金曜日の晩は普段は 飲み会は常に割り勘なウチの会社が珍しく高級バーに 招待してくれました。
「サーバーとして動作していたアプリ」はサーバじゃないのか、てのは置いといても それで DB 壊れるってかなり酷いレベル。
コマンドラインで単独一回限りの実行もしてくれるんですが /Sオプション付けると常駐して専用DLLを通して 連続的にサービスを実行してくれるアプリケーションも あります。
なんか一気に嘘臭く
ホラも限度を超えると訴えられるぞ
だよな。 これはMSに訴えられたら負けるレベル ネットには何を書いてもいいといまだ思っているやつがいるとは。 ご愁傷さま
サイドパーティを含めて ずっしりと重い過去資料(マニュアル、参考書、一部プリント アウト)ってのが関の山だろ 使用許諾契約書にミッションクリティカルな用途には 使ってはならない と明記されているんだし...
サイドメニュー?
サラダとかデザートとかもりもり出てくるパーティかな。
サイドパーティじゃなくてサードパーティ
これは敢えて書く迄もないだろw
>>1 が高級バーに連れて行ってもらえた
実はこれから始まるバグフィックスまでの
開発室監禁の挨拶代わりじゃねの?
「今日のバーはサラダも食べ放題だ」 「ええっ!!ドリンクだけじゃないんですか?!!!」
パーティじゃなくてバー
ああ、キカイダーが乗ってるやつ。
357 :
1 :2010/02/24(水) 21:58:37
>>1 ですが、今同僚の女性社員3名と開発室に監禁されて
ます。部屋にはビデオ付きベッドが置かれており共用で
す。シャワールームもトイレットも何故かついてます。
ベッドの上にテーブルを持ち込んで4人並んでPCに
向かってます。部屋はかなり暖房がキツめで皆裸です
おっきした
トイレをトイレットと言う所に感心した
>>358 だが待ってほしい。その3人が森三中レベルだったとしたら、どうだろうか?
361 :
1 :2010/02/25(木) 15:15:22
まだ開発作業は続いています。昨晩はちょっと原因が わかりかけたので3人からご褒美を頂きました。 それぞれ微妙に違うもんですね。結構開発されてました。 さすがに4人でダブルベッドに寝るのは窮屈でしたが。 起きたのはお昼前です
2回射精した
いいスレだな
ここにきて良スレと化す
365 :
1 :2010/02/26(金) 17:00:36
今日も監禁開発作業が継続されています。 見込みでは週明け位までは終わりそうに ありません。 今日始めて一人の同僚がお尻を拭かせて くれました。 いつもはボクが前のほうを拭く役割なので すが...
366 :
1 :2010/02/26(金) 18:12:48
開発作業って情事そのものだなって痛感してます
367 :
1 :2010/02/26(金) 21:00:32
あと、
>>1 の不具合が再発し、修正のための工数を精査し6ヶ月と見積もった所、
上司が発狂し3週間で直せと無茶苦茶な事を言い出しました。
社長と専務に「他人の不具合修正を超短期間でやれと押し付けられた」と
事実を伝えたらSと上司は3/21付けで他部署に左遷が決まりました。
五月蝿いのがいなくなったので、これで心置きなく
不具合原因報告書に「原因:Releaseビルド 修正法:Debugビルド」とかけます。
368 :
1 :2010/02/27(土) 02:00:51
今もまだ開発作業中です。 隣で一人の同僚の娘は裸で寝てます。 時々ボクの股間に手を伸ばしてきますが 払いのけながらの仕事です。もう慣れました。
369 :
デフォルトの名無しさん :2010/02/27(土) 10:44:36
もう少しうまくやれ
>>1 がネタスレ化しようとして必死なのは理解できた
おれにはもう1はいないように思えるんだけど
>>1 は実在しない。
>>1 とは、無能な開発者を、Sに劣らないレベルの高いライブラリを作りたいと望む人々の間で、自然発生的に生まれた底辺プログラマである。
はじめはジョークに過ぎなかった。
>>1 はこの世のどこかにいるはずの底辺プログラマだった。
しかしそれは
>>14 のまさに『糞』と呼ぶに相応しいコードにウンザリしていた京都大学霊長類研究所の間で瞬く間に広まって行った。
Sのコードがこう動いた。VCのあのデバッグモードは美しかった。
>>1 はそうやって、少しずつ理想のバグの原因を突き止めていった。
彼は健康で顔色のよい新入社員である、彼が敵対する同僚はSである、彼はバグの原因を他人のせいにしておかないと落ち着かない、
そして彼は親しみやすいことにメモリ破壊が大好きなのだ!
>>1 はこうして、天才チンパンジーの理想のプログラマのイメージのコラージュとして生まれたのである。
アイちゃんは
>>1 を欲した。故に
>>1 は存在するのである。
373 :
1 :2010/02/28(日) 01:33:13
ふ〜 まだバグが取れません。 彼女達は昼間かなりしつこく攻めてきましたが さすがに今は疲れたのか横ですやすや三人並んで 寝ています。 彼女達のウンコの匂いも嗅ぎました。 一体感が出てきたので頑張って開発を続けます。
スカトロはちょっと
>横ですやすや を横山やすしと空目したことだけは伝えたい。
376 :
1 :2010/03/01(月) 09:26:30
皆出勤してきたみたいです。隣のオフィスが想像しく なってきましt。私たちはまだ監禁されてます。
377 :
1 :2010/03/04(木) 18:12:54
まだ監禁は続いてます。 作業開始から1000回はmakeしてます。
378 :
1 :2010/03/05(金) 04:54:12
お久しぶりです。本当の1です。
>>293 以来です。
またアクセス制限に引っかかって、ずっと書き込めませんでした。
>>344 から
>>377 の1を名乗る書き込みは私ではありません。
お蔭様で、私が担当していたソフトは、無事納品できました。
試験もすべてクリアし、newやdeleteでの異常終了はもう起きていません。
379 :
1 :2010/03/05(金) 05:58:27
と言える日はいつ来るんだろか。 今日もまたオフィス横の監禁室での 彼女達とのmake作業が大量に...
380 :
デフォルトの名無しさん :2010/03/05(金) 12:58:53
>>378 結局何が原因だったのかまとめてくれないか?
会社によってはそういうのは人工的に再現出来る
段階まで煮詰めないとフィックスしたとは
認めてくれないところもあるね。
>>381 >結局何が原因だったのかまとめてくれないか?
メンバー全員のレベルが低かった。
メンバーがC++を使うにはまだ早かった or 年行きすぎてもうCしか使えなかった
原因:S
解決策:Sのコード修正
これが
>>1 の限界。これ以上の調査を
>>1 に求めるのは酷だぞ。
原因:不明
解決策:仕様
これが
>>1 の限界。これ以上の調査を
>>1 に求めるのは酷だぞ。
ポインタの二度消しやってて実行中にエラー吐いて 仕様だって騒いでた奴いたな〜
俺のところには二度消しをやって修正に時間をおもいっきり喰った上に
レビューでdeleteを全て消して修正したと言い張り
挙句にnew/deleteはC++の不具合だと断言した奴がいた。
まぁ、
>>1 もその同類だろうがなw
388 :
1 :2010/03/06(土) 16:37:59
原因は同僚の女性とのコミュニケーション不足でした 今、改善に向かって日夜努力中です。
俺は年行きすぎてもうC++しか使えん
C++初心者だけど、
>>1 以外の人たちのレスが結構ためになった。
初めの方はみんな何言ってるのかさっぱり分からなかった。(何しろdelete[]の[]が□にしか見えなかったのは内緒)
悔しいから、分からない単語をひとつずつ調べていったら、徐々に理解できるようになった。
皆さんありがとうございます。
俺も勉強になった。 みんな結構優しいんだよな。
なんだ俺が二人もいるのか
ゆとり乙 とりあえず中学くらいは卒業しとけや
このスレを振り返ってみた。
>>44 での
>>1 の取った行動。
44 :1:2010/01/07(木) 21:55:51
>>20 スルー
>>23 都合のいい一行目だけ視界に入るものの2行目は理解を超えたためスルー
>>31 同様にスルー
アッー
395 :
1 :2010/03/11(木) 00:32:40
監禁は続いています。みなもうクタクタです。 make総数はついに3000回を超えました。 絶倫と呼んで下さい。 ネットアクセスは暫く自粛しますんで。 次に1を名乗るカキコが出ても偽物だと思って 下さい。
そんな大量の回数makeできるプロジェクトの規模なんて たいしたことないと思うがw
例えばLinuxカーネルとかだったら、一日に何十回も更新が入るんで makeして問題が発生してないかチェックする専門グループ とか居て、別スレッドで作業してんじゃね? 何十台ものPCで並列でmakeを数十分置きに行ってたりしてるとか。 正式なバージョンアップとして公開されるカーネルは失敗した 更新を除いたもの
なるほどね
専門のチェックグループがいるのに
>>14 みたいなコードが許されてしまうのか
永遠にクビになるまで監禁されてれば? コピーコンストラクタと代入演算子の必要性がわからない奴は C++触るなよ
コピーコンストラクタと代入演算子の扱いのデリケートさは C++の最大の難所。仕事でさせられる人は可哀想だと言えば 可哀想。 Java経験者ならすぐにその辺り察知して回避したり、使い 分けられるようになるだろうからなおさら...
ジャバ(笑)
蛇婆
C経験者ってんならわかるけど JAVAだけやってたひとがそのへんの 危険さをすぐに理解できるとは思えない
JAVAって全部大文字なの?Javaじゃなくて?
おっさんがよくJAVAって書くよな 違和感はあるが公式にも全部大文字の例があるから間違いではないだろう それより全部全角のほうが気になる
日本語入力にしてたら 英語入力しようとおもったらSHIFTキーを押しながらやるから全部全角でいいんだよ いちいちF10を押したり半角全角で切り替えるのか?めんどくせーやつだな
いや2chだし好きにすりゃいいよ 別にめんどくさいとは思わんけどね おまえさんだってコード書いてるときは日本語入力切り替えるだろ
どうかんがえても半角全角キー一回押すよりshift押しながら打つほうがめんどくさいだろ いや、いいんだけどさ
半角モード涙目
Javaは良い選択肢だと思うぜ
>>1 はJavaへ移行することでC++の煩わしさから解放されるだろう
オレも
>>1 がC++の世界からいなくなることで不安から解放される
>>410 もJavaを一度やってみたほうがいい
そしたらC++の煩わしさなど大半はアホらしい
もの(Java勉強不足/C勉強不足が原因)だった
ということがわかる筈(本当に煩わしいものは
あることはあるが)(C++の世界(笑))
java(笑)なんて何の役に立つんだ CPU資源を無駄食いした糞重いソフトが出来上がるだけじゃねえか ソフトウェアは速さこそ正義だ
みんながみんなF1を欲しいわけじゃないしなぁ 中にはステップワゴンを欲しい人間も居る
JavaをF1に例えるのは買いかぶり過ぎ C++もステップワゴンとは違うだろ
おいw
春眠暁を覚えず
VC++ →(VC)++ BCC++ →(BCC)++ 共にWindows環境依存の拡張があるんで、こう考えた ほうがいいかも Java→(--(C++))++ ()を外す事ができないことに注意
外す事ができないことに注意(キリッ)
>>1 はまだ監禁されて女子社員達とmakin' loveな毎日を
送ってるのか?
南京に行ったんじゃね?
421 :
デフォルトの名無しさん :2010/03/22(月) 18:33:19
偽1はもう来ないのか
本物の1もなかなか来ないけどね。
改めてC++は分かりにくいと感じたよ。 C#のネイティブコンパイラがVSに含まれないかなぁ。
(Windowsユーザなら無償DL可という意味での)フリーな csc.exeじゃ不満か?
425 :
デフォルトの名無しさん :2010/03/24(水) 21:35:39
.NETではないネイティブコードを出力できるC#コンパイラが Visual StudioのIDEから使用できたらなぁ。 という意味でした。 需要はあると思うんだけど。
Ngenでも使ってください
427 :
デフォルトの名無しさん :2010/03/24(水) 22:50:24
Ngenはネイティブコードにコンパイルしてくれるけど、 実行時には.NET Frameworkが必要だから。
それは別にいいだろ
こんなクススレがなんで人気あるんだ?
反面教師になるからかな。
Mono-FrameworkではC#コンパイラがあってlinuxやMac-OS でも動作するとか. なんで現時点でもあの複雑きわまりない文法を解釈しネィティブ コードを吐き出すものが無いとも言えない。 ただし勿論.NETの語彙に精通することがコーディングには 必須。されど.NETはWindowsアーキテクチャーを強く仮定 してるものだから使い勝手が良いものになるとは今のところ 思えない。
434 :
デフォルトの名無しさん :2010/04/08(木) 18:06:40
ちょっと良く分からないんですが、 14のコードはばっちりC++だと思うんですが、 糞とか言ってる人は何が言いたいんでしょうか。
>>434 だからインスタンスを関数呼び出ししたり代入してみろって
内部でヒープから確保する部分のあるクラスにコピーコンストラクタも
代入演算子もないとか、基本中の基本を破っているんだぞ
件のC1をvectorに放り込んだらどうなるんだ?
不思議なスレだな。
442 :
434 :2010/04/17(土) 13:16:08
コピーや代入がちゃんと設計できてないから、 C++っぽくないってことですかね。
ぽくないとかそういうレベルじゃない 下手に扱うとエラーが発生するから糞
444 :
1 :2010/09/11(土) 12:33:16
お久しぶりです。お陰さまでクビになってません。 次の開発プロジェクトも順調に進んでいます。 また困ったらここで質問します。
445 :
デフォルトの名無しさん :2010/09/11(土) 12:44:09
>>441 余り見掛け無いですが、此れが'C++' [source]ですか…
`Visual`のみで?
446 :
デフォルトの名無しさん :2010/09/11(土) 12:45:57
はて… `Visual` `C++`
447 :
デフォルトの名無しさん :2010/09/11(土) 12:47:41
何方がお好みですか… 'C++'
tes
449 :
デフォルトの名無しさん :2011/09/29(木) 00:44:24.09
argc
豆知識。デバッグモードじゃなくても最適化じゃなくてノーマルのリリースにしたら、 間違ったコードの所で落ちるようになる。最適化はエロイ人じゃないと罠だと思う。
そういう場合は警告出てるので、それをちゃんと潰していれば問題ない が、文句言う奴はエラーじゃねーから問題ないとかのたまう
452 :
デフォルトの名無しさん :2011/12/28(水) 23:03:14.47
常識を豆知識と称して披露するのってすごく恥ずかしいことだと思う
常識を豆知識と称して披露するのってすごく恥ずかしいことだと思う
「帝国」の記憶が生きている―日本は世界最大の対外純資産保有国
「円の独歩高」について、日本経済が他国に比べて相対的に信用されている証拠という持論も、一部で知られている。
世界経済の不安定要因は、デリバティブ(金融派生商品)という市場外取引だけで、世界中で生産される財とサービスの総額(GDP)の約9倍、
600兆ドル(約4京6800兆円)という金融肥大化である。たとえば、その5%でも買いや売り一辺倒になれば、一気に30兆ドルが動く。
欧州と同じように金融の弱体化に苦しむ米国、貿易黒字を荒稼ぎしてきた中国経済にも陰りがみえる中で日本には、40年来続く円高に負けない強さがある。
「その対外純資産は世界最大であり、債務を全額返済しても、国民1人当たり約220万円の純債権が残る勘定です。
外国債券が目減りする前に10兆円くらいを取り崩せば、検討中の増税分くらいはまかなえる」と、増田氏は語る。
http://sankei.jp.msn.com/economy/news/111229/fnc11122908320001-n1.htm