new/deleteで異常終了する(Visual C++)
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/01/06(水) 20:35:52Visual C++ 2008でコーディングしています。
コーディングは何度も何度も見直しました。
間違っていません。
なのに、実行するとnewで異常終了します。
debug版で動かすと動きます。release版で動かすと異常終了します。
デバッグのしようがありません。
ホントに、コーディングは正しいんです。
こういう症状の原因って何が考えられるでしょうか。
よろしくお願いします。
deleteでも異常終了します。
未初期化ポインタのdeleteとかそんなのではなくて、
本当にコーディングはあってるのに、異常終了します。
動きは、毎回違います。
例えば、printfデバッグをしようとしてprintfを
挿入すると、異常終了ポイントが変わります。
でも、newかdeleteで落ちます。
ホントに、ホントに、コーディングは合ってるのに
どうしようもありません。
もう何ヶ月も仕事が進みません。
このままだと、クビになっちゃいます。
お願いします、本当に、よろしくお願いします。
0002デフォルトの名無しさん
2010/01/06(水) 20:43:530003デフォルトの名無しさん
2010/01/06(水) 20:55:46ローカルルールを見直せ
0004デフォルトの名無しさん
2010/01/06(水) 21:08:290005デフォルトの名無しさん
2010/01/06(水) 21:18:13言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0006デフォルトの名無しさん
2010/01/06(水) 21:23:08これってdelete文を全部コメントアウトしても症状は同じ?
一再deleteしなくても一応は動くでしょ。deleteしないとメモリーオーバフローしちゃう?
0007デフォルトの名無しさん
2010/01/06(水) 21:56:280008デフォルトの名無しさん
2010/01/06(水) 22:00:390009デフォルトの名無しさん
2010/01/06(水) 22:10:080010デフォルトの名無しさん
2010/01/06(水) 22:11:240011デフォルトの名無しさん
2010/01/06(水) 22:12:04単発の質問でスレ立てはマナー違反な。
いちおう言っとくけど。
0012デフォルトの名無しさん
2010/01/06(水) 22:12:540013デフォルトの名無しさん
2010/01/06(水) 22:13:0900141
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 ; } ;
} ;
00151
2010/01/06(水) 22:41:54い。 コンストラクタでNULLを入れる。
ろ。 init()で領域確保。
は。 失敗したらNULLを入れる。
に。 deleteしたらNULLを入れる。
ほ。 デストラクタで開放する。
は、徹底してます。
上記、C2の例みたく、デストラクタが
どんどん直列に呼び出される場合があります。
00161
2010/01/06(水) 22:43:06いま、家なので、明日会社でやってみます。
もし仮にdeleteしないでうまくいったら、
deleteが原因ってことですか?
> 7
何が破壊されていますか。
破壊のよくある失敗原因はありますか。
> 11
ごめんなさい。しりませんでした。次から気をつけます。
でも、ネットで調べても全然のってないんです。
もう、2chにアクセスするエリートプログラマしか
頼れないんです。
> 12
えっ、そんな方法あるんですか。
明日会社でトライしてみます。
0017デフォルトの名無しさん
2010/01/06(水) 22:44:37んー、特に問題は見あたらないなー
0018デフォルトの名無しさん
2010/01/06(水) 23:07:37もし、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 が失敗するなんて殆んど考えられないけどね。
0019デフォルトの名無しさん
2010/01/06(水) 23:13:180020デフォルトの名無しさん
2010/01/06(水) 23:14:040021デフォルトの名無しさん
2010/01/06(水) 23:22:46これはスマン。NULLポインタにdeleteしたことなんか無かったもんで。
0022デフォルトの名無しさん
2010/01/06(水) 23:34:140023デフォルトの名無しさん
2010/01/07(木) 00:13:19俺の感で言うと暗黙のoperator=でポインタをコピーして二重deleteとみた。
0024デフォルトの名無しさん
2010/01/07(木) 00:14:28ぼくわるくないもん! ぼくわるくないもん! ぼくわるくないもん! ぼくわるくないもん!
> なのに、実行するとnewで異常終了します。
わるいのはかんきょうだ! ぼくわるくないもん!
って時点でもうね。
ガチで書いているなら向いていないから辞めなさい。社会人を。
ネタで書いているなら向いていないから辞めなさい。人間を。
0025デフォルトの名無しさん
2010/01/07(木) 00:17:12正直初心者がC++とかやると周りが不幸になるからやめたほうがいいよなー。
>>24
俺はC++で間違いなく書けたなんてRAII徹底しないと自信を持てないな。
生のポインタ使いつつ自信を持てる人をある意味、尊敬する。ある意味な。
0026デフォルトの名無しさん
2010/01/07(木) 00:21:54調べるのが定石
0027デフォルトの名無しさん
2010/01/07(木) 00:40:55一応、古い処理系だとnew失敗でnullが返る(std::nothrowなしでも)のはあるが…
自分はVS2008は使わんので分からないが、どっちなのだろうか?
>>25
烈しく同意。自分はC++に限らず「間違っていない」なんて口が割けても絶対に言えんわ。
0028デフォルトの名無しさん
2010/01/07(木) 01:05:45このパターンだと、多分それだと捕まらないんじゃないかなぁ。
> 動きは、毎回違います。
ってことだから。
アホの書いたコードがビルドやprintfデバッグで挙動が変わる場合、高確率でメモリ破壊やメモリ未初期化が原因。
それにより、バイナリが変わる度にヒープやスタック(やそこに残ったゴミ)の状況が変化し現象が変化する。
そしてほぼ全てのアホは、根拠皆無なのに何故か肥大化したプライドを守るために
目が曇って and/or 意図的に目を曇らせ、いくらコードを見てもそれを発見できずに自分以外の何かが原因だと喚く。
> このままだと、クビになっちゃいます。
それはヤバいね。先手を打って自分から退職願を出せば自分都合になるし退職金ももらえるよ?
0029デフォルトの名無しさん
2010/01/07(木) 01:11:47Visual C++ 6.0がNULLを返す最後の世代。
2008は9.0だから(数ヵ月後には2010(10.0)が出る)
普通のnewでNULLが帰ってくるのは現在考慮する必要は殆どないかと。
# 昔からのコードの保守で使わざるを得ない不幸な環境の人も多少はいるでしょうが
0030デフォルトの名無しさん
2010/01/07(木) 01:40:16メモリ無くなったらNULL参照で落ちるという糞処理系
まあ例外投げるようにすることはできるから
そうすりゃいいだけの話ではあるが
0031デフォルトの名無しさん
2010/01/07(木) 02:48:05コンパイルが通るかどうか
0032デフォルトの名無しさん
2010/01/07(木) 03:33:10C++じゃなくC#或はJavaで書いてみる。
十分本質的なコードが出来た後にC++に移植する。
プログラムに課せられている問題と、C++特有の
技術上の問題がごっちゃになると難しい。(特に
VCは細かい技術上の配慮が必要で繊細)
(いきなりC++で完璧なコードを作ること自体に無
理がありそう。それなりにCやC#,Javaの経験があっ
たほうがいい)
C++コード書けるんだったらJava,C#の
コードを書くのはそれほど難しくは無い。
ただライブラリ関数の名前を覚えたり
調べたりするのがちょっと最初はきついかも
0033デフォルトの名無しさん
2010/01/07(木) 04:04:280034デフォルトの名無しさん
2010/01/07(木) 04:17:41良い。精神衛生上問題が大有りだから。
仕様書がある限り、潔くそのコードを捨てて
書き直すのが最善。
JavaやC#とかのようなものでもそれが言える
C++だったら尚更。
0035デフォルトの名無しさん
2010/01/07(木) 04:20:11急がば回れ
でつねw
0036デフォルトの名無しさん
2010/01/07(木) 05:06:19>>14のコードじゃバグるのわかるだろ
0037デフォルトの名無しさん
2010/01/07(木) 05:11:22?
0038デフォルトの名無しさん
2010/01/07(木) 05:20:48class c;
と
class[] c;
を混同しようものならコンパイルが通らないから
そういった系統のバグは発生しない点では初学者には優しいか...
0039デフォルトの名無しさん
2010/01/07(木) 06:06:55new C2[5] とかしないで std::vector<C2> を使う
添え字の範囲もチェックする
0040デフォルトの名無しさん
2010/01/07(木) 07:31:380041デフォルトの名無しさん
2010/01/07(木) 17:05:030042デフォルトの名無しさん
2010/01/07(木) 20:48:08>ホントに、コーディングは正しいんです。
その幻想をぶち壊すこと。
0043デフォルトの名無しさん
2010/01/07(木) 21:41:53> い。 コンストラクタでNULLを入れる。
> ろ。 init()で領域確保。
まずコンストラクタとinitを分ける必要が無い。しかもinitを忘れないように徹底するのが難しい。
NULLがあるとNULLの場合の動作も対応する必要がありプログラムを安定させるのが難しくなる。
> は。 失敗したらNULLを入れる。
newで失敗すると例外が投げられるので意味が無い。
> に。 deleteしたらNULLを入れる。
> ほ。 デストラクタで開放する。
>は、徹底してます。
これらの徹底は難しいよ。参照とRAIIとスマポを使おう。ともかく生ポは扱わないのが近道。
追伸 目で見て確認は徹底とは言えないので注意
00441
2010/01/07(木) 21:55:51ダメでした。deleteを一切しなくても、newで落ちます。
>> 12
やり方が良く分かりませんでしたが、異常終了ポイントや変数値の
チェックはできました。printfデバッグで異常終了するnewの直前まで
正しい値が出力される変数ですら、異常終了時にはめちゃめちゃに
破壊されてます。それどころか、プログラム全般にわたり変数の多くの
値がデタラメに改竄されてます。
>> 23, 27, 29
確かにそのようですね。勉強になりました。ただ、今回はそう簡単でも
ありません。例外をキャッチするコードを挿入しましたが、とにかく
newの途中で異常終了するので役に立ちません。
>> 24, 42
コーディングは合ってると書いたのは、単に質問だけすると、
ポインタの扱いとかdeleteの失敗とかそういう初心者向けの
コメントしか来ないだろうと思ったので、敢えて書きました。
コーディングとは別のところで良く陥るミスとかないですか。
例えば、コンパイラオプションを間違えてるとか。
>> 28
メモリ管理の問題の可能性が高いとは私も思っています。
ただ、newで落ちるというのが解せません。例え、メモリ
管理が間違っていて、誤った代入がされていたとしても、
newで落ちますか?どんな時に、newで異常終了しますか?
00451
2010/01/07(木) 22:02:19嬉しいんですが、このデバッグが終わらないと、心から喜べません。
よろしくお願いします。
0046デフォルトの名無しさん
2010/01/07(木) 22:04:5200477
2010/01/07(木) 22:10:220048デフォルトの名無しさん
2010/01/07(木) 22:31:290049デフォルトの名無しさん
2010/01/07(木) 22:44:45>コーディングとは別のところで良く陥るミスとかないですか。
その幻想をぶち壊さないと前に進めないよ。
とりあえず、落ちる最小のコードをupしてごらん。
0050デフォルトの名無しさん
2010/01/07(木) 22:55:180051デフォルトの名無しさん
2010/01/07(木) 23:06:54まず、その「俺のノーミソは機能している」という幻想をぶち壊す。
> メモリ管理が間違っていて、誤った代入がされていたとしても、newで落ちますか?
相も変わらず、ぼくわるくないもん!!!か。
あらゆる参照可能なメモリにあらゆる値が存在しうる場合に発生しうる全ての現象が起こる。
電卓ソフトがメモリ破壊が原因で暴走し、突如モナリザの絵を200枚連続で
プリンタから出力することもありうる。しかもカラーで。
0052デフォルトの名無しさん
2010/01/07(木) 23:07:26VisualStudio2008はりリースモードでもデバッグ情報作るからデバッグできるよ。
0053デフォルトの名無しさん
2010/01/08(金) 00:04:39# とはいえそこまで出来たら後は自分で殆ど解決してしまうけど
0054デフォルトの名無しさん
2010/01/08(金) 00:45:37> ポインタの扱いとかdeleteの失敗とかそういう初心者向けの
> コメントしか来ないだろうと思ったので、敢えて書きました。
> コーディングとは別のところで良く陥るミスとかないですか。
> 例えば、コンパイラオプションを間違えてるとか。
これはどうみても
「お前らごときが俺のプログラムの不具合を詮索ことが許されると思っているか。
お前らが思うような不具合など、俺様のプログラムに存在することなど絶対にありえない。
俺様のプログラムが完全であると認め、それ以外の不具合の原因を俺様のために追求せよ」
と言っているのに等しい。
もうね、こんな奴プログラマー失格とか社会人失格とかってレベルじゃない。
会社にいたら死力を尽くして距離を置いて、接近されぬよう逃げるべき相手。
もはや>>44の一番適切な回答は、「ハイソーデスネ、アナタノプログラムモンダイハアリマセンヨ」だ。
(参考文献 http://glossary.tank.jp/t0018.html)
0055デフォルトの名無しさん
2010/01/08(金) 08:15:19他のPCでコンパイルしてみたら?
00567
2010/01/08(金) 08:22:330057デフォルトの名無しさん
2010/01/08(金) 09:10:57まあ向いてないんだろうね。
0058デフォルトの名無しさん
2010/01/08(金) 09:12:250059デフォルトの名無しさん
2010/01/08(金) 09:32:200060デフォルトの名無しさん
2010/01/08(金) 10:29:400061デフォルトの名無しさん
2010/01/08(金) 12:22:20どういう条件で落ちるのかも正確に書けない奴のコードが正しいはず無いだろう。
0062デフォルトの名無しさん
2010/01/08(金) 14:09:29既に致命傷を受けていてdeleteでとどめを刺されているだけ
0063デフォルトの名無しさん
2010/01/08(金) 15:42:110064デフォルトの名無しさん
2010/01/08(金) 15:45:520065デフォルトの名無しさん
2010/01/08(金) 16:17:06c1 = c2;
or
C1 c1(c2);
0066デフォルトの名無しさん
2010/01/08(金) 19:14:47なにが原因だったかは忘れた。
これって人のプログラムを直してるの?
そうじゃなかったら、最後に動いた状態まで戻せないの?
0067デフォルトの名無しさん
2010/01/08(金) 21:13:09間抜けなことに、本人も「アドバイスしてるつもり」だから
余計タチが悪いよな。
00681
2010/01/08(金) 21:36:31クラッシュを起こすクラスを使用するプログラムの、
落ちる部分とはぜんぜん違うところのとあるコードを変更したところ、
newやdeleteでのクラッシュが起きなくなりました。
変更したところは、その部分のテストでは特に問題なくて、
その部分でエラーが起きたこともないんですが、ちょっとその部分の
コードを変えました。
すると、突然、しっかり動き出しました。
解決したと思っていいのか、よく分からないですが、
今日のところは問題は起きてません。
0069デフォルトの名無しさん
2010/01/08(金) 21:39:260070デフォルトの名無しさん
2010/01/08(金) 21:42:3100717
2010/01/08(金) 21:53:550072デフォルトの名無しさん
2010/01/08(金) 21:57:06おまえみたいな初心者は頼むから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 ; }
};
0073デフォルトの名無しさん
2010/01/08(金) 22:01:14おいおい…初心者に罠イクナイ。ここまで頭の悪い奴にSTLを使わせても
自分でデバッグできない不具合を埋め込んでゴネだすのがオチだぞ…
>>14
おまえみたいな初心者は頼むから会社もプログラマーも辞めてくれ
0074デフォルトの名無しさん
2010/01/08(金) 23:25:520075デフォルトの名無しさん
2010/01/08(金) 23:30:59え? 明らかに>>1のノーミソの不具合があるのに、
それによる観測結果が正しいだなんて誰が保証を(ry
0076デフォルトの名無しさん
2010/01/08(金) 23:42:360077デフォルトの名無しさん
2010/01/08(金) 23:49:38○ 一見動いているように見える
◎ 動くか動かないか分からないが、今のところは落ちない
「ちゃんと動く」ってのと「今は落ちていない」の違いも理解できないのか?
0078デフォルトの名無しさん
2010/01/08(金) 23:57:370079デフォルトの名無しさん
2010/01/08(金) 23:57:48ちゃんと動くもちゃんと動いているように見えるも同じ
0080デフォルトの名無しさん
2010/01/09(土) 00:05:410081デフォルトの名無しさん
2010/01/09(土) 00:15:40趣味のコードならそれでいいさ。誰も困らないからね。
>>80
この手のはマジで会社の寄生虫だよな…>>1のように他人のせいにして
学習せず原因を追求せず30過ぎても40過ぎても>>1と同レベルのコードを書く。
0082デフォルトの名無しさん
2010/01/09(土) 00:55:17別に>>1が汚いコード書こうが81は困らない
だからどうでもいいだろ。
おまえが>>1のコードで直接被害うけてるならともかく第三者のくせにごちゃごちゃいうなみっともない
0083デフォルトの名無しさん
2010/01/09(土) 01:13:030084デフォルトの名無しさん
2010/01/09(土) 02:50:21企業内でコードを書くことは少なからず責任を伴う。
どうしてうまくいかないのか悩む→学生の鑑のような行為だが
企業内で研究開発は兎も角、勉強や学習をするのは会社法に
抵触する犯罪。こちらのほうがずっと深刻で、こういうことが
まかり通っているとその会社は破滅の路を辿っていることになる。
0085デフォルトの名無しさん
2010/01/09(土) 04:48:310086デフォルトの名無しさん
2010/01/09(土) 10:58:55つまり技術の無い奴は来るなということですね
0087デフォルトの名無しさん
2010/01/09(土) 11:22:00お前が一番みっともないんだけどな
00886
2010/01/09(土) 11:59:16目処が付きそうで良かったね。
2chの中でもプログラム関係は本当に人を攻撃するのが好きだよね。
0089デフォルトの名無しさん
2010/01/09(土) 12:56:290090デフォルトの名無しさん
2010/01/09(土) 17:10:51会社に相当する団体が大杉なんだこの国は
0091デフォルトの名無しさん
2010/01/09(土) 20:27:39メモリ管理を指摘するだけのコメントはアドバイスにならない
0092デフォルトの名無しさん
2010/01/09(土) 21:01:46ソースは見せられませんが私の書いたコードは間違っていません! VC++のバグです! それ以外の答えはお断りします! って言ってるんじゃねぇ。メモリ管理のバグがなんにせよ、問題の箇所が見えなきゃアドバイスも何もないよ
00931
2010/01/09(土) 22:32:34今のところ、問題は再発してません。
アドバイスを下さった方々、ありがとうございます。
今回のように、newで落ちる(またはdeleteで落ちる)という
デバッグが極めて難しい状況に陥った時、うまくデバッグする
方法はあるでしょうか。
しかも、今回はたまたま問題箇所が見つかりましたが、
落ちるクラスを使用する部分と全然違う部分のコードが
原因でした。
このような時にどようにデバッグするのがいいのか
アドバイスをいただければと思います。
よろしくお願いします。
0094デフォルトの名無しさん
2010/01/09(土) 22:34:59> デバッグが極めて難しい状況に陥った時、うまくデバッグする方法はあるでしょうか。
端的に言うと「発生させるな、レビューと実装規約で抑えろ」だ。だがお前には無理だ。
お前のように正しいと決めつける奴、つまりお前には無理だ。
絶対に正しいレビューはできない。絶対にお前には無理だ。
0095デフォルトの名無しさん
2010/01/09(土) 22:55:59会社の人は見ています。下手すると詐欺で告訴
されるかもしれません。
0096デフォルトの名無しさん
2010/01/09(土) 23:00:450097デフォルトの名無しさん
2010/01/09(土) 23:11:46は既にある程度バグを含んでいるとすら言える。
>>1はこのスレを立てた段階のコードをまだ持っていれば
再度コンパイルしてみれば?
多分警告が多数出てる筈。その警告の原因一個一個潰すと
エラーの原因がわかる筈。
0098デフォルトの名無しさん
2010/01/09(土) 23:26:15危険だろ
0099デフォルトの名無しさん
2010/01/09(土) 23:27:29Windowsにおけるvalgrind相当のツールは知らんけど
0100デフォルトの名無しさん
2010/01/09(土) 23:32:440101デフォルトの名無しさん
2010/01/09(土) 23:38:09俺の先輩で、数万円の残業代稼ぎに腹を立てた
アホ監査役のせいか、クビになっただけでなく
億単位の損害賠償を民事で引っ掛けられた人
知ってるんで、コードが動かないから残業しよう
なんてことはしないほうがいいんじゃないか..
0102デフォルトの名無しさん
2010/01/09(土) 23:58:03俺の先輩では動かないコードを放置して有給休暇を取って
旅行に行ったらその間に勝手にリリースされちゃって
客先がそのソフトを使って事故を起こしてしまったらしく
警察沙汰(業務上過失致死傷のカドで逮捕者も出たらしい)
になったらしいから、コードが動かない、或いは問題を含む
ことを知りながら放置するのだけはやめたほうがいいと思う
ね。
0103デフォルトの名無しさん
2010/01/10(日) 00:56:45>億単位の損害賠償を民事で引っ掛けられた人
損害賠償請求権等不存在確認請求訴訟を起こすべきレベル
0104デフォルトの名無しさん
2010/01/10(日) 01:44:080105デフォルトの名無しさん
2010/01/10(日) 10:39:410106デフォルトの名無しさん
2010/01/10(日) 12:24:250107デフォルトの名無しさん
2010/01/10(日) 14:28:410108デフォルトの名無しさん
2010/01/10(日) 14:34:430109デフォルトの名無しさん
2010/01/10(日) 14:40:32自称プロよりよっぽど良い。
日本人はよっぽどスキル高くないと雇われん
0110デフォルトの名無しさん
2010/01/10(日) 14:51:26それ以前にどういうバグだったのかを知りたいわ。
こんなエスパー相手にしているようなスレ立てるやつにプログラム書けるわけない。
0111デフォルトの名無しさん
2010/01/10(日) 15:51:37情報工学の修士が雇えたりする
0112デフォルトの名無しさん
2010/01/10(日) 15:57:15特にプログラムなんかいじってなくて、
別のメモリーがたっぷり積んであるマシンで動かしたら落ちなかったとか、
メモリ常駐のプログラムを増やしたり減らしたりしたら落ちなくなったとか、
そういう話なんじゃないかな?
0113デフォルトの名無しさん
2010/01/10(日) 15:57:210114デフォルトの名無しさん
2010/01/10(日) 17:04:06情報処理うかったくらいで一流プログラマの仲間入りしたつもりなら大間違い。
0115デフォルトの名無しさん
2010/01/10(日) 17:38:060116デフォルトの名無しさん
2010/01/10(日) 17:41:47> コーディングは何度も何度も見直しました。
> 間違っていません。
これほど傲慢な質問者は他にいない
01171
2010/01/11(月) 01:35:23バグを発生させなければいいというのは確かにそうですね。
勿論その努力をすべきだと思います。
ただ、それでもバグが起きてどうにもならなくなった時
どうするのがいいでしょうか。
>>95, >>101
うちの会社は残業代出ませんので、そういう問題は起こりません。
>>97
いえ、警告は一切なしです。常々、私は警告であっても、必ず
対処するように心がけています。いつも、警告なしでコンパイルを
通ったコードで異常終了するバグに悩まされています。
01181
2010/01/11(月) 01:37:18全部話すと長くなるのですが、今回の開発は私とSさんで分担して
やってます。私がライブラリを作り、Sさんは私の作ったライブラリを
使って実行プログラムを2つ作ります。
私の作ったライブラリのクラスC1のコード内のnewやdeleteで異常終了
する不具合が見つかったのは、もう3ヶ月くらい前のことです。
もともとは私の担当しているコードで異常終了したため、問題は私の
コードにあるのではないかと思い、何度も何度も見直しました。
単体テストでは問題なく、コードレビューでも問題なく、まったく
異常終了の原因が見当たらなかったのです。
なので、Sさんの方に問題があるのではないかと思い、Sさんに
原因調査を依頼しましたが、何だよバグはお前だろみたいな感じで
あまりやってくれないので、時間が経ってしまいました。
確かに、私のコードで落ちるので、私も、再度、テストし、コードも
見直し、何度も何度もチェックしたのですが、問題はなく、Sさんの
コードに問題があるのではないかと言うと、お前のコードで落ちるん
じゃないか人のせいにするのかよみたいな感じで、まったくデバッグが
進みませんでした。
01191
2010/01/11(月) 01:38:26してもまったく進まないので、一緒にやることにしました。
debugビルドで動き、releaseビルドで異常終了。printfデバッグでも
原因が全く掴めない状態で困難を極めました。とにかく、私は、自分の
コードはもう間違ってないと思っていたので、実行プログラムの
ソースコードを直さないとどうにもならないと思っていました。
実行プログラムは2つありますが、問題はその片方だけで起こります。
なので、実行プログラムの方に問題があると私は尚更思いました。
そこで、問題の実行プログラムのソースコードの各所をコメントアウト
するかそれが無理なら無害なスタブに置き換えてテストしてもらいました。
というか、一緒にやりました。ふざけんなよまだおれを疑ってんのかよ
お前のコードで落ちるんじゃねぇかみたいな雰囲気のまま、強引に
やりました。すると、ある部分をコメントアウトしたら異常終了しない
ことが分かりました。その部分は、異常終了するクラスを使う部分とは
全く別の所で、想像もつかないような所でした。
私はその部分のコードを見直すようにお願いしたんですが、
これもなかなか進まなくて、コードを変えろと言っても、
forをwhileにしたり、ちょっと行を入れ替えたり、式の形を変えたり
して持って来るので、私がコードレビューして、ちょっと気になる
ところがあったので、ループと分岐の作りを変えてもらうと、
異常終了が起こらなくなりました。
なので、その部分のコードにメモリを破壊する何らかの原因があったん
だろうと思っています。
0120デフォルトの名無しさん
2010/01/11(月) 01:41:590121デフォルトの名無しさん
2010/01/11(月) 01:41:59GCCやらBCCやらDMCやらいろいろあるだろ?
0122デフォルトの名無しさん
2010/01/11(月) 01:46:58言語訓練のために立てたものではありません。
アイと研究員とのやり取りに利用するスレッドではないので、
関係者以外も書きこんで下さい。
京都大学霊長類研究所
0123デフォルトの名無しさん
2010/01/11(月) 01:49:580124デフォルトの名無しさん
2010/01/11(月) 01:55:480125デフォルトの名無しさん
2010/01/11(月) 02:09:51職場の同僚にどういった頼み方をしたのかは推して知るべしだな。
0126デフォルトの名無しさん
2010/01/11(月) 05:45:08ある箇所を削除して、コンパイルは通るが同様のエラーが
発生するコードをupすべき。
ここの連中が必ず真の原因箇所を突き止めるだろうから。
本当にVCのバグだとしたら、結構怖い話になってくる。
Windowsマシンを基幹システムに繋げるなって話にも
繋がってくるし..
0127デフォルトの名無しさん
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が混合しているとかないですよね?
そういうのが考慮された造りなら問題ないけど、何も考えていないとメモリの取得や開放で異常終了します。
0128デフォルトの名無しさん
2010/01/11(月) 07:56:440129デフォルトの名無しさん
2010/01/11(月) 08:04:40な?やっぱりお前には無理だろ。
リーク系の不具合は追跡困難だから発生させるな。
だが、お前みたいな奴には発生を未然に防ぐことなんてできない。
お前には無理だ。
0130デフォルトの名無しさん
2010/01/11(月) 08:23:48>基本的なコードの誤りは無いのでしょう
いやその例、完璧にコードの誤りだし。
DebugとReleaseで挙動が違うのは、よくある「間違ってるけどたまたま動いてしまっている」って奴だろ。
それにしても、>>1みたいなくだらないバグを3ヶ月も放置しても平気なんて、
世の中オレが思っているより平和なのかねえ。
そして、これほどの低レベルの奴らが平気でCやC++という危険な言語を触っていることに戦慄するよ。
オレが社長ならこいつらは当分LLしか触らせないけどな。
0131デフォルトの名無しさん
2010/01/11(月) 08:31:280132デフォルトの名無しさん
2010/01/11(月) 08:59:040133デフォルトの名無しさん
2010/01/11(月) 09:43:430134デフォルトの名無しさん
2010/01/11(月) 10:36:34>>1は悪くないじゃん
0135デフォルトの名無しさん
2010/01/11(月) 10:55:22いきなり>>1で「コードは絶対正しいんですぅ!」
解決しても「ぼくの書いたコードじゃないんですぅ!ぼく悪くないんですぅ!」
終始責任逃れに徹して、二束三文の自分のプライドを守ることに執着している。
これによりスレでメモリ破壊を指摘されてもなおも解決できず、時間を無駄に費やした。
さらに俺がSの立場でも、>>1見たいな責任の押し付け合いをするクソ野郎相手には
「何だよバグはお前だろ」「人のせいにするのかよ」っていうわ。
たとえ自分のコードの不具合であっても、足手まといには無駄な作業をさせた方が全体にとって利益だからな。
>>1みたいな奴が開発チームにいたらPM権限発動して隔離部屋で個人作業させるわ。
0136デフォルトの名無しさん
2010/01/11(月) 10:59:280137デフォルトの名無しさん
2010/01/11(月) 11:08:34このスレの人には>>1が>>1の立場で書いた情報しか与えられていないのだから。
そして>>1が他人に責任を押し付けるような奴だってのは周知の事実。
確実に>>1にとって都合の悪い事実が捻じ曲げられている & 隠蔽されているだろうな。
0138デフォルトの名無しさん
2010/01/11(月) 11:13:050139デフォルトの名無しさん
2010/01/11(月) 11:43:260140デフォルトの名無しさん
2010/01/11(月) 13:36:50> なので、Sさんの方に問題があるのではないかと思い、Sさんに原因調査を依頼しました
原因がどちらにあるか切り分けもせず「俺は悪くないからお前のせいだろ!」なんてそりゃ誰でも調査を断るわw
0141デフォルトの名無しさん
2010/01/11(月) 13:42:19お前の責任じゃないから、コンパイラが悪いと主張すればクビにはならないよ。
0142デフォルトの名無しさん
2010/01/11(月) 13:42:220143デフォルトの名無しさん
2010/01/11(月) 13:55:13お前らだって「お前のコードが正しいはずないだろボケ!」と答えるだろ?
0144デフォルトの名無しさん
2010/01/11(月) 14:00:10まったくダメなSだ
0145デフォルトの名無しさん
2010/01/11(月) 14:04:560146デフォルトの名無しさん
2010/01/11(月) 15:19:24だと思っている時点で頭がおかしい
0147デフォルトの名無しさん
2010/01/11(月) 16:42:31int* p;
p=&x;
p[10000]=500;
これもコンパイルはとおるな
0148デフォルトの名無しさん
2010/01/11(月) 16:55:220149デフォルトの名無しさん
2010/01/11(月) 17:22:550150デフォルトの名無しさん
2010/01/11(月) 17:49:070151デフォルトの名無しさん
2010/01/11(月) 17:52:20それはデバッグ版でも動かないだろう
デバッグ版では動いてリリース版では動かない理由を考えないと
0152デフォルトの名無しさん
2010/01/11(月) 18:02:250153デフォルトの名無しさん
2010/01/11(月) 18:42:510154デフォルトの名無しさん
2010/01/11(月) 22:19:35変数はちゃんと初期化してからつかおーね
0155デフォルトの名無しさん
2010/01/11(月) 22:29:05char s[100];
printf("(´ー`)%s", s);
↓
(´ー`)フフフフフ…
0156デフォルトの名無しさん
2010/01/12(火) 02:58:40前々から噂にはなっては消えてる話だろ?
VC(.NETになる前)のmalloc辺りに問題があって
alloc/deallocを数十億回繰り返してフラグメンテーションが
発生すると落ちる場合があるって噂
嘘くさいと思ってる(メモリデフラグソフトがデビューしだした
頃の噂だから)
0157デフォルトの名無しさん
2010/01/12(火) 03:11:12ネットがADSLになって普及した2000年代前半の頃
盛んにホットフィックスが行われたが少なからず
メモリ周りのセキュリティーホールフィックスが
行われたらしいがその際にバグが混入したとかしなかった
とか聞くね。そのせいかどうか知らんが、ウチの会社では
端末も基幹もWindowsだけど、端末から基幹のほうには
telnetでしか接続出来なかったりしてる(端末はしっかり7
が入っているが、基幹は未だにWindows NT4.0 Server )
0158デフォルトの名無しさん
2010/01/12(火) 05:25:080159デフォルトの名無しさん
2010/01/12(火) 07:29:43勝手にスワップしてデフラグされるの?
0160デフォルトの名無しさん
2010/01/12(火) 08:06:45ここでのフラグメンテーションは、プロセスメモリ空間上での
話で要するにmalloc/freeなどのライブラリヒープマネージャー
が管理する情報が混乱した状態になる事だろ。
VCみたいなメイジャーなコンパイラとかじゃまずありえないん
じゃね?
0161デフォルトの名無しさん
2010/01/12(火) 08:18:380162デフォルトの名無しさん
2010/01/12(火) 08:34:44否、気にすべきで、コード記述に便利だからとか奇麗だから
という理由だけでC++とかで安直にクラスの下にクラスを
何層にもぶら下げてるような設計にしてたりすると
new/deleteの回数が増えて、ヒープマネージャに負荷がかか
って、デーモンとかサービスのように途中終了する機会がなく
長時間動作させるようなアプリではシステムによっては、
パフォーマンスが突然滅茶苦茶落ちてフリーズ状態になる
可能性がある
と昔、習った。
0163デフォルトの名無しさん
2010/01/12(火) 17:43:09可能性があるだけですね?
どのみちWindowsUpdateで再起動するし問題ないですね
0164デフォルトの名無しさん
2010/01/13(水) 03:04:33は早くソース晒せ
0165デフォルトの名無しさん
2010/01/13(水) 05:20:02>telnetでしか接続出来なかったり
セキュリティも糞もねぇなw
0166デフォルトの名無しさん
2010/01/13(水) 05:24:58何をトンチキなことを…
アプリケーションがポインタ直接保持してんのに
勝手に移動されたらどーすんだよ。ハンドルならいざ知らず。
0167デフォルトの名無しさん
2010/01/13(水) 06:01:25PuttyとかTera-SSH使っているとでもいいたいんだろ
0168デフォルトの名無しさん
2010/01/13(水) 16:39:29区別するっつーのwどういう職場なら区別しないんだ。
telnetはtelnet。sshはsshだ。
0169デフォルトの名無しさん
2010/01/13(水) 17:57:54Telnetと区別しないで伝統名称Telnetと
呼ぶ職場も多いね。
んなことよりもソース晒さないの?
01701
2010/01/13(水) 22:03:16>>126,>>164
申し訳ございませんが、コードのアップは控えさせて下さい。
それに、今回の問題の本質は、コードがどうだったかよりも、
異常終了するコードの箇所と全く違う部分のコードが原因と
なっていることもあり、そのような場合にプログラマはどう
デバッグすればいいかと言うことだと思います。
>>127,>>151
デバッグであってもリリースであっても、動かない場合は
基本的にはコードに問題があると思っています。変数の
初期化や配列インデックス値の不正はよくあるミスです
ので注意しています。デバッグ版の場合はデバッグ用の
領域が広くとられているため、バグが表面化しない場合が
あるということなんだろうと思います。
>>128
どう糞なのか教えてください。
14で示したコードはnewやdeleteで落ちるものだから、
その部分の概要が分かるように簡略化して書きました。
それとも、STLやスマートポインタを使ってないことが
糞なのでしょうか。
0171デフォルトの名無しさん
2010/01/14(木) 01:12:350172デフォルトの名無しさん
2010/01/14(木) 02:37:15言い訳するなら俺らに対してじゃなく会社にすべきだよね。まあどうでもいいけど
0173デフォルトの名無しさん
2010/01/14(木) 03:50:44>デバッグすればいいかと
まともな人ならちゃんとデバッガ駆使します。
0174デフォルトの名無しさん
2010/01/14(木) 04:21:03Windowsマシンは安価故、大量生産されて世のPCの95%以上がWindowsマシンであることは一般常識であることは言う迄もない
が、それらは決定的に重要なところに使われているわけでもない
が故に、バグがあると影響がゆっくりと現れて、数が多いが故に
中々取れないんで、バグの存否情報は大きな社会問題に発展する
可能性を秘めている。
会社と君の関係の問題も重要だがWindowsの重要なライブラリの
バグではないかという主張を公開ネット上で一つのスレを使って
主張した以上、多少時間がかかってもいいからその状況を可能な
限り忠実に再現できるファイルセットをアップして真相が決定で
きるようにして欲しい。もちろん君がどの会社のどの部署に
所属しているのか絶対にわからないように変数や関数の名前を無
意味な英数字にするとかそういう工夫は必須だしそうしても貰わ
ないとこの板の住人にも迷惑がかかる。
0175デフォルトの名無しさん
2010/01/14(木) 08:31:07知識の不足なんてさして問題じゃない。
察しの良い奴ならすぐに学習するからな。
メモリ破壊を指摘されても「僕悪くない!!」に徹した
技術屋としては最低最悪な外道だから糞なんだよ。
0176デフォルトの名無しさん
2010/01/14(木) 09:10:13コードの話をしてるんじゃなかったのか?w
0177デフォルトの名無しさん
2010/01/14(木) 13:03:29どういうことをしていて、newで落ちてたようだ、ということだけでも書いていただければ、勉強になるんですが。
はっきりしないんでしょうかね。
0178デフォルトの名無しさん
2010/01/14(木) 13:04:56>>43
0179デフォルトの名無しさん
2010/01/14(木) 19:15:38Visual Studio デバッガ ネイティブ コードのデバッグ
http://msdn.microsoft.com/ja-jp/library/k70yt3e2.aspx
Visual Studio デバッガ メモリ リークの検出と特定
http://msdn.microsoft.com/ja-jp/library/x98tx3cf.aspx
↑のリンク先をよーく読んで
とりあえず_CrtSetDbgFlag()でも入れとけ
0180デフォルトの名無しさん
2010/01/14(木) 20:20:17御託並べてないでさっさとソース晒せよ
0181デフォルトの名無しさん
2010/01/14(木) 21:18:56>>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() ....;
};
0182デフォルトの名無しさん
2010/01/14(木) 21:29:32糞コードw
0183デフォルトの名無しさん
2010/01/14(木) 21:41:030184デフォルトの名無しさん
2010/01/14(木) 22:04:05何でvectorつかわねーんだ
0185デフォルトの名無しさん
2010/01/14(木) 22:09:04>>184 STL版のサンプルよろしく
0186デフォルトの名無しさん
2010/01/14(木) 22:10:40メモリリークする。
多重deleteが防げてない。
例外も防げてない。
メモリ不足?
0187デフォルトの名無しさん
2010/01/14(木) 22:13:22C++BuilderならCodeGuardで一発なんだがな
どうせDebug版にもバグあるよそれ
それがRelease版で顕在化しただけ
0188デフォルトの名無しさん
2010/01/14(木) 22:26:21STL使わない意味ってなんかあんの?
0189デフォルトの名無しさん
2010/01/14(木) 22:35:12>>72
0190デフォルトの名無しさん
2010/01/14(木) 23:00:21C++ with STLも悪くない。Cよりずっと簡単に書けるのに、Cよりそれほど遅くない。
だいぶコードサイズが大きくなるけどな。
だが、C++ without STLは最悪だ。そんなものを使うくらいなら、別の言語を使ったほうがマシだ。
0191デフォルトの名無しさん
2010/01/14(木) 23:14:11C++ With STLが一番じゃん。
昔みたいにCPUもメモリも貧弱だったならともかく
CPU高速メモリあまりすぎの現状速さなんてたいして問題にならん。
0192デフォルトの名無しさん
2010/01/14(木) 23:19:07DSやPSPでSTLバリバリのコード書いたらすぐにメモリはパンクしてしまう。
0193デフォルトの名無しさん
2010/01/14(木) 23:20:40組み込み環境の事も忘れないであげてください。
0194デフォルトの名無しさん
2010/01/14(木) 23:29:43同意
0195デフォルトの名無しさん
2010/01/15(金) 02:24:540196デフォルトの名無しさん
2010/01/15(金) 03:48:100197デフォルトの名無しさん
2010/01/15(金) 05:31:17>>1の返答待ちと言う事で.
WindowsのVCコンパイラが生成した正当なプログラムが
ライブラリの未発見のバグで突然オチることがあるという
のが本当なら結構なニュースバリューがあるし...>>1は
発見者として大感謝されるかも...
0198デフォルトの名無しさん
2010/01/15(金) 08:39:58プロジェクトの設定による違いって事は無いかな?
0199デフォルトの名無しさん
2010/01/15(金) 17:23:580200デフォルトの名無しさん
2010/01/15(金) 23:19:3702011
2010/01/15(金) 23:23:02私は、Windowsにバグがあると言った覚えはありません。
落ちる部分のコードを何度見直しても合ってるのに
それでも異常終了するという症状に困っていると言いました。
実際は、クラスC1を使うプログラムの、クラスC1を使う
部分と全く別のコードが原因でした。
WindowsあるいはVCのバグではありません。
0202デフォルトの名無しさん
2010/01/15(金) 23:32:17コピコンを書かない理由がわからない
0203デフォルトの名無しさん
2010/01/15(金) 23:40:26「コピーすることがないから」は立派な理由だろう。
0204デフォルトの名無しさん
2010/01/16(土) 00:09:06もう最適化やめちゃいなよ
#pragma optimize("", off)
0205デフォルトの名無しさん
2010/01/16(土) 00:13:50その場合、書かない(=デフォルト)のではなく、privateかリンカエラーにするんじゃないか?
0206デフォルトの名無しさん
2010/01/16(土) 00:33:06privateなりにして作っておかないとコンパイラが勝手にpublicで作るよ。
そして誰かがそのオブジェクトのコピーをして死ぬほどめんどくさくなると。
operator=も同上。
0207デフォルトの名無しさん
2010/01/16(土) 01:54:04もし問題が再現する最小のプログラムが書けたらコンパイラメーカが
修正してくれる可能性は大いにあるが、そうでなければ無視される
0208デフォルトの名無しさん
2010/01/16(土) 09:28:21> C/C++コンパイラでコンパイル時に警告が出ているコード
> は既にある程度バグを含んでいるとすら言える。
そこまで言い出すとオープンソースなんかほぼ全滅だろ。
0209デフォルトの名無しさん
2010/01/16(土) 10:25:02UNIX環境の最大の強み。非純正開発環境でmakeして当然出てくる
ワーニングを無視しても殆どが遜色無く動くからオプソが成立
しており膨大な数のソフト資産が形成されてる。
0210デフォルトの名無しさん
2010/01/16(土) 10:54:51まともなプロジェクトならウォーニングはほとんど出ないよ。
オープンソースの場合は、「動けばいい」じゃないから。
0211デフォルトの名無しさん
2010/01/16(土) 11:44:590212デフォルトの名無しさん
2010/01/16(土) 12:20:20boostは完全C++準拠
boostで警告が出るならコンパイラの問題
0213デフォルトの名無しさん
2010/01/16(土) 13:10:49お前はGCCが糞だと言うのか。
だったら何を使えと言うのか?
0214デフォルトの名無しさん
2010/01/16(土) 14:36:29http://www.boost.org/development/tests/trunk/developer/summary.html
まあこれでも見て考えや
0216デフォルトの名無しさん
2010/01/16(土) 20:46:35この人は原因を把握しているのだろうか?
「落ちなくなったから正常に違いない」なんだろうか?
今までは「潜在的なバグがあるが偶然デバッグ版で動いていたがリリース版では動かなかった」で、
今は「潜在的なバグがあるが偶然デバッグ版でもリリース版でも落ちない」ではないだろうか?
最後に聞かせて欲しい。
不具合の原因はなんだったの?
初期化漏れ? コードの誤り?
「全く関係ないところを直したら落ちなくなりました」は原因じゃないですよ。
0217デフォルトの名無しさん
2010/01/16(土) 20:50:07release版で死ぬなら初期化漏れかあるいはメモリ破壊だろ
0218デフォルトの名無しさん
2010/01/17(日) 12:53:270219デフォルトの名無しさん
2010/01/17(日) 13:09:140220デフォルトの名無しさん
2010/01/17(日) 13:54:40プログラム云々より人間関係の信頼構築に失敗している
0221デフォルトの名無しさん
2010/01/17(日) 14:37:230222デフォルトの名無しさん
2010/01/17(日) 15:10:520223デフォルトの名無しさん
2010/01/17(日) 15:22:40そもそもSの書いた部分に原因があるとも、直ったのかどうかすら分からない。
しかも>>1はSに責任を擦り付けるためだけの情報しか書いていない。
0224デフォルトの名無しさん
2010/01/17(日) 16:36:130225デフォルトの名無しさん
2010/01/17(日) 16:46:200226デフォルトの名無しさん
2010/01/17(日) 16:52:110227デフォルトの名無しさん
2010/01/17(日) 21:41:03そんだけボンクラなんだろ。両者とも。
そんなことが許されてるからボンクラなままだとも言える。
0228デフォルトの名無しさん
2010/01/19(火) 00:30:23そいつも一週間は格闘してたな。しかも露見した時の言い訳がひどかった。
参照渡しにするのを忘れたとか何とか。
コピー代入禁止にしとけばすぐに発見できることなのにな。
まあ>>1が同じ事してないことを祈るよ
0229デフォルトの名無しさん
2010/01/19(火) 12:46:20ボンクラ(ボンクラ&)
ボンクラ operator = (ボンクラ&)
02301
2010/01/19(火) 19:58:17どう糞なのでしょう。
大半の方はSTLやスマートポインタを使っていない
から糞だといっているようです。
>>228の方は「>>14みたいなコード」(ダメなコードの意味だと思いますが)の
何がダメなんでしょうか。
0231デフォルトの名無しさん
2010/01/19(火) 20:52:130232デフォルトの名無しさん
2010/01/19(火) 21:19:04何がダメって理由書いたつもりなんだが…
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ならそっちの方がわかりやすいメッセージが出るだろ
何が起こるか予想できるよな?
0233デフォルトの名無しさん
2010/01/19(火) 22:31:54初期化子を使ってないとかnew失敗でNULLが返ってくる前提とか
初期化メゾットをコンストラクタで呼ばないとか
さんざん言われた設計だけでなく実装段階でもクソだ
0234デフォルトの名無しさん
2010/01/19(火) 22:41:03また 都 市 伝 説 が一つ増えたというわけだ。
0235デフォルトの名無しさん
2010/01/19(火) 23:13:10せめてEffective C++ぐらい読んどけ
0236デフォルトの名無しさん
2010/01/19(火) 23:53:54^^
0237デフォルトの名無しさん
2010/01/20(水) 21:50:18デバッグ版で動いてリリース版で動かない例にはなってないな
0238デフォルトの名無しさん
2010/01/20(水) 22:14:490239デフォルトの名無しさん
2010/01/21(木) 00:24:49> 大半の方はSTLやスマートポインタを使っていないから糞だといっているようです。
アホすぎる。何が悪いと言われているのに理解できないお前のノーミソなど
味噌糞一緒くたにしてしまえ。そのノークソが一番糞だ。
たまにいるよな、これぐらい酷いアホ。
自分が理解できていないことを理解できないアホは救いようがない。
0240デフォルトの名無しさん
2010/01/21(木) 01:03:32世の中の殆どの人間がそうなんだが
0241デフォルトの名無しさん
2010/01/21(木) 01:06:18なんか騒動になってるぞ。株式市場とかにも影響してくるから
釈明の意味でソース晒したほうがいいんじゃね?(情報漏れは
無いようにな)
0242デフォルトの名無しさん
2010/01/21(木) 01:38:50おまえがその騒動とやらのソースをさらせよ
0243デフォルトの名無しさん
2010/01/21(木) 02:30:58でオチるのが常。
しかしこの伸びは異常。やっぱし何かあるからだろな。
0244デフォルトの名無しさん
2010/01/22(金) 10:50:24.objや.lib内ではnon-virtualなメソッドが最新の.hではvirtualになってたみたいな。
プリコンパイルヘッダの仕組みを理解せずに使ってたとか、
同じ.hに依存する2つのライブラリのビルドの整合がとれてないとか。
0245デフォルトの名無しさん
2010/01/23(土) 01:51:42にたようなしょうじょうおこるよね
でばっぐだとあいだにまーじんとってくれるからもんだいおきなかったりするし
printfいれるとうわがきされるいちがかわるからばぐはっしょうするし
はいれつをじさくarrayにおきかえてoperator[]じっそうして
きょうかいちぇっくやったらだいたいつかまるきがする
0246デフォルトの名無しさん
2010/01/23(土) 01:56:410247デフォルトの名無しさん
2010/01/24(日) 14:54:08>設計だけでなく実装段階でもクソ
意味不明
0248デフォルトの名無しさん
2010/01/24(日) 15:32:170249デフォルトの名無しさん
2010/01/24(日) 18:15:550250デフォルトの名無しさん
2010/01/24(日) 20:02:240251デフォルトの名無しさん
2010/01/24(日) 20:20:360252デフォルトの名無しさん
2010/01/29(金) 12:10:34やっぱりコンパイラのバグだと思います。
Oilly Debugとかなんとかいうツールで生成コードを
見せてもらった至る所で違ってました
0253デフォルトの名無しさん
2010/01/29(金) 13:05:48次のバージョンでは直してもらえるかもしれない
0254デフォルトの名無しさん
2010/01/29(金) 14:07:490255デフォルトの名無しさん
2010/01/29(金) 14:14:24VCなどのコンパイラに感染するウィルスがあるって噂
を聞いた事ががあるんで、ウィルスチェック。
そんじょそこらのウィルスチェッカーじゃ弱くて
OSをインストールした直後で一切ネットに繋げていない
状態で、インストール元CD−ROMのパッケージを全部
こじあけてHDに展開して、すべてのファイルについて
MD5をとっておく。
(MD5データのみUSBメモリに保存しておく)
開発マシンの同名ファイルのMD5を取って比較する。
出来ればMD5だけじゃなく他のその手のチェックサム
を合わせて取って比較チェックしたほうがいいかも
0256デフォルトの名無しさん
2010/01/29(金) 16:54:320257デフォルトの名無しさん
2010/01/29(金) 20:59:320258デフォルトの名無しさん
2010/01/31(日) 22:55:15とりあえず収拾してくれ
0259デフォルトの名無しさん
2010/02/02(火) 07:18:390260デフォルトの名無しさん
2010/02/02(火) 08:58:43本当はそうかもしれないけど、他人のコードがおかしいとケンカ売っている以上
もう、「ごめん、僕のミスだった」じゃ済まない。
だから、コンパイラのエラーにするしかなかったんだと思う。
特定のコンパイラだと運よく動くなんてことはままあるのだけど。
0261デフォルトの名無しさん
2010/02/02(火) 10:30:42と俺は思ってる。
本当に問題あるのなら食わせたソースと吐いたアセンブラ突き合わせて説明できるはず。
0262デフォルトの名無しさん
2010/02/02(火) 20:58:210263デフォルトの名無しさん
2010/02/02(火) 23:15:0602641
2010/02/03(水) 00:08:18アクセス規制にかかっててずっと書き込めませんでした。
ちなみに、>>252は私ではありません。
あと、皆さんのコメント見ててちょっと思ったんですが、
クラスの値渡しってまずいんですか?
そういうプログラムを普段書かないから分からないんですが、
0265デフォルトの名無しさん
2010/02/03(水) 00:15:43値渡しは出来る(と思う)が、当然だがクラスへの変更操作は
呼び出し元には反映されないので、同一オブジェクトへの2つ
のバージョンが出来てしまうことになり多くの場合に問題が発生する
ので、通常はポインタ渡しにする。
VCの場合、プリコンパイルドヘッダ周りが結構悪さをして
予期せぬ不具合を作る場合がある。ビルドする際には
面倒でも中間ファイルを削除する習慣を付けたいもの
(その代わりビルドの時間が多少犠牲になる)
0266デフォルトの名無しさん
2010/02/03(水) 00:46:230267デフォルトの名無しさん
2010/02/03(水) 00:49:19コピー&代入がおかしいって既に数人が指摘してんじゃん
0268デフォルトの名無しさん
2010/02/03(水) 03:17:05コピー、代入がしっかり設計されているクラスならば値渡しは問題にならない。
ただ効率の問題が別にあるがそれ自体はバグではない。
おまえの作った>>14のクラスをコピーや代入するとバグる。値渡しはその一例にすぎない。
二重deleteでヒープを破壊するからな。
もしお前がコピーや代入をたまたましていなくて問題がなかったとしても
>>14のクラスを他人が使う可能性があるとしたらやばいな
まあ他にも複合的な問題はありそうだけどな
0269デフォルトの名無しさん
2010/02/03(水) 04:14:40クラス内でnew/de;eteするクラスは自前で書くのが当たり前だろ
0270デフォルトの名無しさん
2010/02/03(水) 04:59:39こういうレベルの人に C++ コードを書かせる時点で間違い
0271デフォルトの名無しさん
2010/02/03(水) 05:04:520272デフォルトの名無しさん
2010/02/03(水) 05:25:40いつまで経ってもバグが取れない
0273デフォルトの名無しさん
2010/02/03(水) 07:08:45そいつが開発をしていること自体がプロジェクトのバグだからな。
0274デフォルトの名無しさん
2010/02/03(水) 13:51:32これで許される環境がウラヤマシスギルw
0275デフォルトの名無しさん
2010/02/03(水) 15:09:43なってしまうんだろうなあと思う。
0276デフォルトの名無しさん
2010/02/03(水) 19:01:590277デフォルトの名無しさん
2010/02/03(水) 20:59:390278デフォルトの名無しさん
2010/02/05(金) 23:22:04いや、そもそもコピーコンストラクタと代入演算子を知らないんじゃね?
0279デフォルトの名無しさん
2010/02/05(金) 23:50:36それがどういう意味を持つのか理解できない奴。
確実に>>1はその類。
0280デフォルトの名無しさん
2010/02/06(土) 04:28:56デフォルトのコピーコンストラクタと代入演算子で上手く行くのにね
0281デフォルトの名無しさん
2010/02/06(土) 08:36:020282デフォルトの名無しさん
2010/02/06(土) 12:05:50こういう中途半端な知ったかが、プロジェクト内に害悪コードをまき散らす。
0283デフォルトの名無しさん
2010/02/06(土) 12:46:04Java/C#を使ってぬるぽで頭を抱えている奴と同類だなw
0284デフォルトの名無しさん
2010/02/06(土) 13:03:030285デフォルトの名無しさん
2010/02/06(土) 13:55:59そーいう連中はしねばいいのに。
0286デフォルトの名無しさん
2010/02/06(土) 18:25:250287デフォルトの名無しさん
2010/02/06(土) 22:19:310288デフォルトの名無しさん
2010/02/08(月) 17:46:210289デフォルトの名無しさん
2010/02/08(月) 18:03:350290デフォルトの名無しさん
2010/02/08(月) 19:10:210291デフォルトの名無しさん
2010/02/08(月) 20:27:21そんな。ソース出したら間違いが分かっちゃって、先輩のせいにできないじゃないですか!!!
もう、コンパイラのせいでいいんです。
0292デフォルトの名無しさん
2010/02/08(月) 21:40:5202931
2010/02/11(木) 17:18:44ありがとうございます。
コピー、代入に話が集中してきていますが、
今回の不具合とは関係ないです。
クラスC1がコピーできないのはその通りえすが、
コピーや代入を前提としてないので大丈夫です。
0294デフォルトの名無しさん
2010/02/11(木) 18:20:090295デフォルトの名無しさん
2010/02/11(木) 18:22:130296デフォルトの名無しさん
2010/02/11(木) 20:48:560297デフォルトの名無しさん
2010/02/11(木) 21:20:56あんたプログラムやめて真剣に他の生き方を模索した方がいいと思うよ
0298デフォルトの名無しさん
2010/02/12(金) 00:36:19じゃああらゆる不具合も前提としなければ大丈夫
0299デフォルトの名無しさん
2010/02/12(金) 04:20:19会社都合の方が条件良いよ。
0300デフォルトの名無しさん
2010/02/12(金) 12:41:440301デフォルトの名無しさん
2010/02/12(金) 12:44:39こいつがどうなろうと俺には全く関係がないし
0302デフォルトの名無しさん
2010/02/12(金) 13:02:10でも、実際、ある日突然新米プログラマーが
「2chであなたのプログラムがおかしいという結論になった」
とか言いがかり付けてきたときのケーススタディにはなると思うよ
0303デフォルトの名無しさん
2010/02/12(金) 13:34:17普通はポインタか参照を渡す
0304デフォルトの名無しさん
2010/02/12(金) 14:27:21できるなら実装で禁止するべきだし、そうでなくてもドキュメントに書いて仕様とする必要はあるだろ
0305デフォルトの名無しさん
2010/02/12(金) 15:13:330306デフォルトの名無しさん
2010/02/12(金) 15:18:510307デフォルトの名無しさん
2010/02/13(土) 05:49:41何らかの暗黙のコピーが発生してるんじゃないかって話じゃないのか?
前提としてないから大丈夫って答えからするとまともにチェックしてなさそうだが
オレも実装で禁止すべきだと思うよ。
他人が誤使用してしまったら終了じゃん
0308デフォルトの名無しさん
2010/02/13(土) 07:22:32他人が誤用しないようコードで抑えるのは当然として、
他人のコードであろうとコードレビューで品質を抑える。
レビューですら抑えられないレベルのバカのコードは黙って捨てる。
まぁそもそも>>1の言っていることだから、本当にSが原因だとは限らないがなw
0309デフォルトの名無しさん
2010/02/13(土) 10:42:570310デフォルトの名無しさん
2010/02/13(土) 10:53:260311デフォルトの名無しさん
2010/02/13(土) 12:58:12代入演算子さえ正しく書けば動くんじゃないの?
0312デフォルトの名無しさん
2010/02/13(土) 23:48:36全メンバを 順次 初期化は基本中の基本
0313デフォルトの名無しさん
2010/02/14(日) 02:18:300314デフォルトの名無しさん
2010/02/14(日) 10:07:13必ずしもそれは使わなくてもクラスに次の3行
private:
A(const A&);
A& operator=(const A&);
を付け加えるか(もちろんAは実際のクラス名に変更)これを継承すれば
コピー不可能になるよ
0315デフォルトの名無しさん
2010/02/15(月) 05:56:260316デフォルトの名無しさん
2010/02/15(月) 11:47:24仕事でboostが必ず使えるとでも思っているのか?
0317デフォルトの名無しさん
2010/02/15(月) 12:08:02>>314だけを入れたクラスをnoncopyableという名前で宣言しておき、
これを継承すればboostと同じ事になるから可読性が下がるという
事はない
0318デフォルトの名無しさん
2010/02/15(月) 12:45:460319デフォルトの名無しさん
2010/02/15(月) 14:21:00boost使えても、普通は>>314。
0320デフォルトの名無しさん
2010/02/16(火) 22:31:58んなこたない。
例えば WebKit では Noncopyable というクラスを自前で用意してそれを使っている。
http://trac.webkit.org/browser/trunk/JavaScriptCore/wtf/Noncopyable.h
0321デフォルトの名無しさん
2010/02/16(火) 23:44:56自前で用意するっていうのか?
0322デフォルトの名無しさん
2010/02/17(水) 08:28:450323デフォルトの名無しさん
2010/02/17(水) 08:30:090324デフォルトの名無しさん
2010/02/17(水) 11:34:53んなことないこたない。
一段階余分なものがあると、それを知らない奴はその内容を調べないとならないだろ。
手間がかかるわけじゃなし、>>314が最良だろ。
0325デフォルトの名無しさん
2010/02/17(水) 17:09:58いつのまにか誰かに修正されちゃうかもしれないだろ。w
0326デフォルトの名無しさん
2010/02/17(水) 17:16:49糞吹いたw
0327デフォルトの名無しさん
2010/02/17(水) 17:19:35C#かJavaを使うべし
0328デフォルトの名無しさん
2010/02/17(水) 20:42:28マジで派遣にそれをやられたことがある。
「事前条件チェックするな!実行したら落ちたろ!」と逆ギレされたこともある。
「constなんて使っているバカは誰だ!コンパイルが通らないだろボケ!!」には参った。
仕組みとして防ぐのがベスト、しかも明示的に書くのが理想だが、残念ながらアホには通じないw
0329デフォルトの名無しさん
2010/02/17(水) 21:01:360330デフォルトの名無しさん
2010/02/18(木) 00:25:53派遣にしろプログラマにしろ
そんな危なっかしいのはとてもじゃないけど雇ってられないな
フレームワークやシステムの思想を独断で破られるとか後が大変だぞ、、
0331デフォルトの名無しさん
2010/02/18(木) 00:43:25Noncopyable という名前を見て意図を察することのできない奴はよっぽどの痴呆
万が一コードを見に行ったとしても20秒で読み終わるぞ
似たようなコード片をあちこちにばら撒くよりはミスの可能性が減るし、やっておいて損はない
0332デフォルトの名無しさん
2010/02/18(木) 11:09:480333デフォルトの名無しさん
2010/02/18(木) 11:56:31お前は、ファイルの場所も内容も知ってるから20秒で終わるんだよ。
0334デフォルトの名無しさん
2010/02/18(木) 12:03:45コピー禁止なクラスなんて数個くらいだろうに、なんでほんのちょっとコードを加えるのを
嫌がるのだろうか。
そもそもC++はMix-in的なものはなじんでないから、Noncopyableに限らずいくつも多重継承
されてると、はてなと思ってしまう。
0335デフォルトの名無しさん
2010/02/18(木) 17:13:45半分バグってると思って扱ったほうがいい
0336デフォルトの名無しさん
2010/02/18(木) 18:18:260337デフォルトの名無しさん
2010/02/18(木) 20:58:33プログラマなんて労力を省いてなんぼの商売でしょうに。
0338デフォルトの名無しさん
2010/02/19(金) 01:21:000339デフォルトの名無しさん
2010/02/19(金) 04:58:17でも成立しそうな気がした。
0340デフォルトの名無しさん
2010/02/19(金) 11:41:30privateに決まり切った二行を追加するだけだろうが。
Noncopyable使う場合もinclude文と継承部分の変更が必要で、合計二行の変更が必要。
どんだけ労力変わるんだよ?
0341デフォルトの名無しさん
2010/02/19(金) 13:00:080342デフォルトの名無しさん
2010/02/19(金) 13:10:36noncopyableを使うメリットは、クラスの宣言全部を見ることなくそのクラスがコピー不可だとわかること。
privateに追記派は、クラスのコメントに「コピー不可なクラス」とか書いちゃうわけ?
0343デフォルトの名無しさん
2010/02/19(金) 21:54:01引き起こってくれればいいわけでどっちでも構わないけどな
まあ、値渡しで何が起こるかわからないとか、コピー禁止の方法を知らないとか、
そういうのがこの上のレスだけでも散見できるわけで
noncopyableがあれば一目瞭然というほどの知名度はなさそうだけどな
>>341
final属性か何かと勘違いしていないか?
03441
2010/02/21(日) 17:57:36アプリが突然落ちて、DBマスターを壊したみたいで
大騒ぎでした。で、金曜日についにM$社の担当者が
呼び出されていました。ソースを渋々見せながら状況
を上司が説明したところ、結局担当者にも原因がわか
らなかったようで、「どうか御内密に」という意味で
しょうか、ずっしりと重いキャスター付き旅行用スー
ツケースを置いてきました。あの中には何が入ってい
たのかは大体想像がつきますが、金曜日の晩は普段は
飲み会は常に割り勘なウチの会社が珍しく高級バーに
招待してくれました。
0345デフォルトの名無しさん
2010/02/21(日) 19:54:52それで DB 壊れるってかなり酷いレベル。
0346デフォルトの名無しさん
2010/02/21(日) 20:45:49/Sオプション付けると常駐して専用DLLを通して
連続的にサービスを実行してくれるアプリケーションも
あります。
0347デフォルトの名無しさん
2010/02/21(日) 22:40:090348デフォルトの名無しさん
2010/02/22(月) 01:16:050349デフォルトの名無しさん
2010/02/22(月) 07:23:32これはMSに訴えられたら負けるレベル
ネットには何を書いてもいいといまだ思っているやつがいるとは。
ご愁傷さま
0350デフォルトの名無しさん
2010/02/22(月) 13:24:45ずっしりと重い過去資料(マニュアル、参考書、一部プリント
アウト)ってのが関の山だろ
使用許諾契約書にミッションクリティカルな用途には
使ってはならない
と明記されているんだし...
0351デフォルトの名無しさん
2010/02/22(月) 14:19:420352デフォルトの名無しさん
2010/02/24(水) 01:13:080353デフォルトの名無しさん
2010/02/24(水) 04:45:53これは敢えて書く迄もないだろw
>>1が高級バーに連れて行ってもらえた
実はこれから始まるバグフィックスまでの
開発室監禁の挨拶代わりじゃねの?
0354デフォルトの名無しさん
2010/02/24(水) 12:24:57「ええっ!!ドリンクだけじゃないんですか?!!!」
0355デフォルトの名無しさん
2010/02/24(水) 17:03:510356デフォルトの名無しさん
2010/02/24(水) 19:50:5203571
2010/02/24(水) 21:58:37ます。部屋にはビデオ付きベッドが置かれており共用で
す。シャワールームもトイレットも何故かついてます。
ベッドの上にテーブルを持ち込んで4人並んでPCに
向かってます。部屋はかなり暖房がキツめで皆裸です
0358デフォルトの名無しさん
2010/02/24(水) 23:19:230359デフォルトの名無しさん
2010/02/24(水) 23:32:590360デフォルトの名無しさん
2010/02/25(木) 06:45:30だが待ってほしい。その3人が森三中レベルだったとしたら、どうだろうか?
03611
2010/02/25(木) 15:15:22わかりかけたので3人からご褒美を頂きました。
それぞれ微妙に違うもんですね。結構開発されてました。
さすがに4人でダブルベッドに寝るのは窮屈でしたが。
起きたのはお昼前です
0362デフォルトの名無しさん
2010/02/25(木) 15:32:080363デフォルトの名無しさん
2010/02/26(金) 13:01:370364デフォルトの名無しさん
2010/02/26(金) 15:16:5203651
2010/02/26(金) 17:00:36見込みでは週明け位までは終わりそうに
ありません。
今日始めて一人の同僚がお尻を拭かせて
くれました。
いつもはボクが前のほうを拭く役割なので
すが...
03661
2010/02/26(金) 18:12:4803671
2010/02/26(金) 21:00:32上司が発狂し3週間で直せと無茶苦茶な事を言い出しました。
社長と専務に「他人の不具合修正を超短期間でやれと押し付けられた」と
事実を伝えたらSと上司は3/21付けで他部署に左遷が決まりました。
五月蝿いのがいなくなったので、これで心置きなく
不具合原因報告書に「原因:Releaseビルド 修正法:Debugビルド」とかけます。
03681
2010/02/27(土) 02:00:51隣で一人の同僚の娘は裸で寝てます。
時々ボクの股間に手を伸ばしてきますが
払いのけながらの仕事です。もう慣れました。
0369デフォルトの名無しさん
2010/02/27(土) 10:44:360370デフォルトの名無しさん
2010/02/27(土) 10:53:360371デフォルトの名無しさん
2010/02/28(日) 00:42:380372デフォルトの名無しさん
2010/02/28(日) 01:14:29>>1とは、無能な開発者を、Sに劣らないレベルの高いライブラリを作りたいと望む人々の間で、自然発生的に生まれた底辺プログラマである。
はじめはジョークに過ぎなかった。
>>1はこの世のどこかにいるはずの底辺プログラマだった。
しかしそれは>>14のまさに『糞』と呼ぶに相応しいコードにウンザリしていた京都大学霊長類研究所の間で瞬く間に広まって行った。
Sのコードがこう動いた。VCのあのデバッグモードは美しかった。
>>1はそうやって、少しずつ理想のバグの原因を突き止めていった。
彼は健康で顔色のよい新入社員である、彼が敵対する同僚はSである、彼はバグの原因を他人のせいにしておかないと落ち着かない、
そして彼は親しみやすいことにメモリ破壊が大好きなのだ!
>>1はこうして、天才チンパンジーの理想のプログラマのイメージのコラージュとして生まれたのである。
アイちゃんは>>1を欲した。故に>>1は存在するのである。
03731
2010/02/28(日) 01:33:13まだバグが取れません。
彼女達は昼間かなりしつこく攻めてきましたが
さすがに今は疲れたのか横ですやすや三人並んで
寝ています。
彼女達のウンコの匂いも嗅ぎました。
一体感が出てきたので頑張って開発を続けます。
0374デフォルトの名無しさん
2010/02/28(日) 11:09:080375デフォルトの名無しさん
2010/03/01(月) 08:19:36を横山やすしと空目したことだけは伝えたい。
03761
2010/03/01(月) 09:26:30なってきましt。私たちはまだ監禁されてます。
03771
2010/03/04(木) 18:12:54作業開始から1000回はmakeしてます。
03781
2010/03/05(金) 04:54:12またアクセス制限に引っかかって、ずっと書き込めませんでした。
>>344から>>377の1を名乗る書き込みは私ではありません。
お蔭様で、私が担当していたソフトは、無事納品できました。
試験もすべてクリアし、newやdeleteでの異常終了はもう起きていません。
03791
2010/03/05(金) 05:58:27今日もまたオフィス横の監禁室での
彼女達とのmake作業が大量に...
0380デフォルトの名無しさん
2010/03/05(金) 12:58:53もうやめろよ。>偽者
0381デフォルトの名無しさん
2010/03/05(金) 14:29:39結局何が原因だったのかまとめてくれないか?
会社によってはそういうのは人工的に再現出来る
段階まで煮詰めないとフィックスしたとは
認めてくれないところもあるね。
0382デフォルトの名無しさん
2010/03/05(金) 17:51:27>結局何が原因だったのかまとめてくれないか?
メンバー全員のレベルが低かった。
0383デフォルトの名無しさん
2010/03/05(金) 18:39:240384デフォルトの名無しさん
2010/03/05(金) 22:10:29解決策:Sのコード修正
これが>>1の限界。これ以上の調査を>>1に求めるのは酷だぞ。
0385デフォルトの名無しさん
2010/03/06(土) 10:24:51解決策:仕様
これが>>1の限界。これ以上の調査を>>1に求めるのは酷だぞ。
0386デフォルトの名無しさん
2010/03/06(土) 15:09:31仕様だって騒いでた奴いたな〜
0387デフォルトの名無しさん
2010/03/06(土) 15:42:08レビューでdeleteを全て消して修正したと言い張り
挙句にnew/deleteはC++の不具合だと断言した奴がいた。
まぁ、>>1もその同類だろうがなw
03881
2010/03/06(土) 16:37:59今、改善に向かって日夜努力中です。
0389デフォルトの名無しさん
2010/03/07(日) 12:09:100390デフォルトの名無しさん
2010/03/07(日) 22:01:40初めの方はみんな何言ってるのかさっぱり分からなかった。(何しろdelete[]の[]が□にしか見えなかったのは内緒)
悔しいから、分からない単語をひとつずつ調べていったら、徐々に理解できるようになった。
皆さんありがとうございます。
0391デフォルトの名無しさん
2010/03/07(日) 22:32:09みんな結構優しいんだよな。
0392デフォルトの名無しさん
2010/03/07(日) 22:38:340393デフォルトの名無しさん
2010/03/08(月) 22:13:14とりあえず中学くらいは卒業しとけや
0394デフォルトの名無しさん
2010/03/11(木) 00:25:26>>44 での>>1 の取った行動。
44 :1:2010/01/07(木) 21:55:51
>>20 スルー
>>23 都合のいい一行目だけ視界に入るものの2行目は理解を超えたためスルー
>>31 同様にスルー
アッー
03951
2010/03/11(木) 00:32:40make総数はついに3000回を超えました。
絶倫と呼んで下さい。
ネットアクセスは暫く自粛しますんで。
次に1を名乗るカキコが出ても偽物だと思って
下さい。
0396デフォルトの名無しさん
2010/03/11(木) 00:41:25たいしたことないと思うがw
0397デフォルトの名無しさん
2010/03/11(木) 00:53:20makeして問題が発生してないかチェックする専門グループ
とか居て、別スレッドで作業してんじゃね?
何十台ものPCで並列でmakeを数十分置きに行ってたりしてるとか。
正式なバージョンアップとして公開されるカーネルは失敗した
更新を除いたもの
0398デフォルトの名無しさん
2010/03/11(木) 01:31:00専門のチェックグループがいるのに>>14みたいなコードが許されてしまうのか
0399デフォルトの名無しさん
2010/03/12(金) 12:40:25コピーコンストラクタと代入演算子の必要性がわからない奴は
C++触るなよ
0400デフォルトの名無しさん
2010/03/14(日) 00:52:53C++の最大の難所。仕事でさせられる人は可哀想だと言えば
可哀想。
Java経験者ならすぐにその辺り察知して回避したり、使い
分けられるようになるだろうからなおさら...
0401デフォルトの名無しさん
2010/03/14(日) 06:57:100402デフォルトの名無しさん
2010/03/14(日) 07:52:120403デフォルトの名無しさん
2010/03/14(日) 12:09:43JAVAだけやってたひとがそのへんの
危険さをすぐに理解できるとは思えない
0404デフォルトの名無しさん
2010/03/14(日) 12:37:120405デフォルトの名無しさん
2010/03/14(日) 16:39:38違和感はあるが公式にも全部大文字の例があるから間違いではないだろう
それより全部全角のほうが気になる
0406デフォルトの名無しさん
2010/03/14(日) 17:01:47英語入力しようとおもったらSHIFTキーを押しながらやるから全部全角でいいんだよ
いちいちF10を押したり半角全角で切り替えるのか?めんどくせーやつだな
0407デフォルトの名無しさん
2010/03/14(日) 17:48:51別にめんどくさいとは思わんけどね
おまえさんだってコード書いてるときは日本語入力切り替えるだろ
0408デフォルトの名無しさん
2010/03/14(日) 21:21:49いや、いいんだけどさ
0409デフォルトの名無しさん
2010/03/15(月) 01:24:390410デフォルトの名無しさん
2010/03/15(月) 01:44:30>>1はJavaへ移行することでC++の煩わしさから解放されるだろう
オレも>>1がC++の世界からいなくなることで不安から解放される
0411デフォルトの名無しさん
2010/03/15(月) 06:37:54そしたらC++の煩わしさなど大半はアホらしい
もの(Java勉強不足/C勉強不足が原因)だった
ということがわかる筈(本当に煩わしいものは
あることはあるが)(C++の世界(笑))
0412デフォルトの名無しさん
2010/03/15(月) 07:17:03CPU資源を無駄食いした糞重いソフトが出来上がるだけじゃねえか
ソフトウェアは速さこそ正義だ
0413デフォルトの名無しさん
2010/03/15(月) 09:04:02中にはステップワゴンを欲しい人間も居る
0414デフォルトの名無しさん
2010/03/15(月) 09:26:11C++もステップワゴンとは違うだろ
0415デフォルトの名無しさん
2010/03/15(月) 09:33:080416デフォルトの名無しさん
2010/03/15(月) 09:37:030417デフォルトの名無しさん
2010/03/15(月) 10:30:27BCC++ →(BCC)++
共にWindows環境依存の拡張があるんで、こう考えた
ほうがいいかも
Java→(--(C++))++
()を外す事ができないことに注意
0418デフォルトの名無しさん
2010/03/16(火) 05:39:300419デフォルトの名無しさん
2010/03/20(土) 01:51:27送ってるのか?
0420デフォルトの名無しさん
2010/03/20(土) 02:59:290421デフォルトの名無しさん
2010/03/22(月) 18:33:190422デフォルトの名無しさん
2010/03/23(火) 19:47:270423デフォルトの名無しさん
2010/03/24(水) 18:56:02C#のネイティブコンパイラがVSに含まれないかなぁ。
0424デフォルトの名無しさん
2010/03/24(水) 20:54:44csc.exeじゃ不満か?
0425デフォルトの名無しさん
2010/03/24(水) 21:35:39Visual StudioのIDEから使用できたらなぁ。
という意味でした。
需要はあると思うんだけど。
0426デフォルトの名無しさん
2010/03/24(水) 22:04:210427デフォルトの名無しさん
2010/03/24(水) 22:50:24実行時には.NET Frameworkが必要だから。
0428デフォルトの名無しさん
2010/03/24(水) 23:02:290429デフォルトの名無しさん
2010/03/24(水) 23:03:180430デフォルトの名無しさん
2010/03/25(木) 00:29:170431デフォルトの名無しさん
2010/03/25(木) 02:17:270432デフォルトの名無しさん
2010/03/25(木) 12:32:38でも動作するとか.
なんで現時点でもあの複雑きわまりない文法を解釈しネィティブ
コードを吐き出すものが無いとも言えない。
ただし勿論.NETの語彙に精通することがコーディングには
必須。されど.NETはWindowsアーキテクチャーを強く仮定
してるものだから使い勝手が良いものになるとは今のところ
思えない。
0433デフォルトの名無しさん
2010/03/25(木) 14:40:09日本語でおk
0434デフォルトの名無しさん
2010/04/08(木) 18:06:4014のコードはばっちりC++だと思うんですが、
糞とか言ってる人は何が言いたいんでしょうか。
0435デフォルトの名無しさん
2010/04/08(木) 18:41:530436デフォルトの名無しさん
2010/04/08(木) 18:46:05だからインスタンスを関数呼び出ししたり代入してみろって
内部でヒープから確保する部分のあるクラスにコピーコンストラクタも
代入演算子もないとか、基本中の基本を破っているんだぞ
0437デフォルトの名無しさん
2010/04/08(木) 19:08:330438デフォルトの名無しさん
2010/04/08(木) 19:13:510439デフォルトの名無しさん
2010/04/08(木) 19:17:300440デフォルトの名無しさん
2010/04/08(木) 19:18:050441デフォルトの名無しさん
2010/04/10(土) 00:49:54http://codepad.org/tBficgxh
http://codepad.org/DghzfV7V
0442434
2010/04/17(土) 13:16:08C++っぽくないってことですかね。
0443デフォルトの名無しさん
2010/04/17(土) 16:49:16下手に扱うとエラーが発生するから糞
04441
2010/09/11(土) 12:33:16次の開発プロジェクトも順調に進んでいます。
また困ったらここで質問します。
0445デフォルトの名無しさん
2010/09/11(土) 12:44:09余り見掛け無いですが、此れが'C++' [source]ですか…
`Visual`のみで?
0446デフォルトの名無しさん
2010/09/11(土) 12:45:57`Visual`
`C++`
0447デフォルトの名無しさん
2010/09/11(土) 12:47:41'C++'
0448デフォルトの名無しさん
2010/09/14(火) 01:05:010449デフォルトの名無しさん
2011/09/29(木) 00:44:24.090450デフォルトの名無しさん
2011/09/30(金) 13:04:29.86間違ったコードの所で落ちるようになる。最適化はエロイ人じゃないと罠だと思う。
0451デフォルトの名無しさん
2011/09/30(金) 16:18:30.72が、文句言う奴はエラーじゃねーから問題ないとかのたまう
0452デフォルトの名無しさん
2011/12/28(水) 23:03:14.470453デフォルトの名無しさん
2011/12/29(木) 19:37:50.440454デフォルトの名無しさん
2011/12/30(金) 01:26:49.780455デフォルトの名無しさん
2012/01/04(水) 05:40:46.76「円の独歩高」について、日本経済が他国に比べて相対的に信用されている証拠という持論も、一部で知られている。
世界経済の不安定要因は、デリバティブ(金融派生商品)という市場外取引だけで、世界中で生産される財とサービスの総額(GDP)の約9倍、
600兆ドル(約4京6800兆円)という金融肥大化である。たとえば、その5%でも買いや売り一辺倒になれば、一気に30兆ドルが動く。
欧州と同じように金融の弱体化に苦しむ米国、貿易黒字を荒稼ぎしてきた中国経済にも陰りがみえる中で日本には、40年来続く円高に負けない強さがある。
「その対外純資産は世界最大であり、債務を全額返済しても、国民1人当たり約220万円の純債権が残る勘定です。
外国債券が目減りする前に10兆円くらいを取り崩せば、検討中の増税分くらいはまかなえる」と、増田氏は語る。
http://sankei.jp.msn.com/economy/news/111229/fnc11122908320001-n1.htm
■ このスレッドは過去ログ倉庫に格納されています