2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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++ の開発責任者に電話しろ!

3 :デフォルトの名無しさん:2010/01/06(水) 20:55:46
コーディングを見直す前に
ローカルルールを見直せ

4 :デフォルトの名無しさん:2010/01/06(水) 21:08:29
┐(´ー`)┌ < サッサト クビニナレ

5 :デフォルトの名無しさん:2010/01/06(水) 21:18:13
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

6 :デフォルトの名無しさん:2010/01/06(水) 21:23:08
>>1
これってdelete文を全部コメントアウトしても症状は同じ?
一再deleteしなくても一応は動くでしょ。deleteしないとメモリーオーバフローしちゃう?

7 :デフォルトの名無しさん:2010/01/06(水) 21:56:28
newで異常終了するってことは破壊されてる

8 :デフォルトの名無しさん:2010/01/06(水) 22:00:39
世界が?

9 :デフォルトの名無しさん:2010/01/06(水) 22:10:08
再インストールはしましたか??

10 :デフォルトの名無しさん:2010/01/06(水) 22:11:24
たぶん、間違ってないよ

11 :デフォルトの名無しさん:2010/01/06(水) 22:12:04
>>1
単発の質問でスレ立てはマナー違反な。
いちおう言っとくけど。

12 :デフォルトの名無しさん:2010/01/06(水) 22:12:54
2008ってリリースモードでもデバッグできない?

13 :デフォルトの名無しさん:2010/01/06(水) 22:13:09
ショートカットに 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
>>14
んー、特に問題は見あたらないなー

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 が失敗するなんて殆んど考えられないけどね。


19 :デフォルトの名無しさん:2010/01/06(水) 23:13:18
NULLポインタはdeleteしても問題ないだろ。

20 :デフォルトの名無しさん:2010/01/06(水) 23:14:04
ま、C1型の値をコピーしちまってるオチだろうな。

21 :デフォルトの名無しさん:2010/01/06(水) 23:22:46
>>19
これはスマン。NULLポインタにdeleteしたことなんか無かったもんで。

22 :デフォルトの名無しさん:2010/01/06(水) 23:34:14
今日の魚影は濃いな

23 :デフォルトの名無しさん:2010/01/07(木) 00:13:19
そもそもnewが失敗した場合はNULLじゃなくて例外飛ぶから根本から間違えてんだけどな。

俺の感で言うと暗黙のoperator=でポインタをコピーして二重deleteとみた。

24 :デフォルトの名無しさん:2010/01/07(木) 00:14:28
> コーディングは何度も何度も見直しました。間違っていません。
ぼくわるくないもん! ぼくわるくないもん! ぼくわるくないもん! ぼくわるくないもん!
> なのに、実行するとnewで異常終了します。
わるいのはかんきょうだ! ぼくわるくないもん!

って時点でもうね。
ガチで書いているなら向いていないから辞めなさい。社会人を。
ネタで書いているなら向いていないから辞めなさい。人間を。

25 :デフォルトの名無しさん:2010/01/07(木) 00:17:12
しかし、何が悲しいって仕事でC++書いてるやつがこのレベルということ。
正直初心者がC++とかやると周りが不幸になるからやめたほうがいいよなー。

>>24
俺はC++で間違いなく書けたなんてRAII徹底しないと自信を持てないな。
生のポインタ使いつつ自信を持てる人をある意味、尊敬する。ある意味な。


26 :デフォルトの名無しさん:2010/01/07(木) 00:21:54
destructorに一個一個debug文を入れてどこでオチてるか
調べるのが定石

27 :デフォルトの名無しさん:2010/01/07(木) 00:40:55
>>23
一応、古い処理系だとnew失敗でnullが返る(std::nothrowなしでも)のはあるが…
自分はVS2008は使わんので分からないが、どっちなのだろうか?
>>25
烈しく同意。自分はC++に限らず「間違っていない」なんて口が割けても絶対に言えんわ。

28 :デフォルトの名無しさん:2010/01/07(木) 01:05:45
>>26
このパターンだと、多分それだと捕まらないんじゃないかなぁ。
> 動きは、毎回違います。
ってことだから。

アホの書いたコードがビルドやprintfデバッグで挙動が変わる場合、高確率でメモリ破壊やメモリ未初期化が原因。
それにより、バイナリが変わる度にヒープやスタック(やそこに残ったゴミ)の状況が変化し現象が変化する。
そしてほぼ全てのアホは、根拠皆無なのに何故か肥大化したプライドを守るために
目が曇って and/or 意図的に目を曇らせ、いくらコードを見てもそれを発見できずに自分以外の何かが原因だと喚く。

> このままだと、クビになっちゃいます。
それはヤバいね。先手を打って自分から退職願を出せば自分都合になるし退職金ももらえるよ?

29 :デフォルトの名無しさん:2010/01/07(木) 01:11:47
>>27
Visual C++ 6.0がNULLを返す最後の世代。

2008は9.0だから(数ヵ月後には2010(10.0)が出る)
普通のnewでNULLが帰ってくるのは現在考慮する必要は殆どないかと。

# 昔からのコードの保守で使わざるを得ない不幸な環境の人も多少はいるでしょうが

30 :デフォルトの名無しさん:2010/01/07(木) 01:40:16
しかもSTLは例外返すことを前提に作られてるから
メモリ無くなったらNULL参照で落ちるという糞処理系
まあ例外投げるようにすることはできるから
そうすりゃいいだけの話ではあるが

31 :デフォルトの名無しさん:2010/01/07(木) 02:48:05
operator=()とコピーコンストラクタをprivateに宣言して、
コンパイルが通るかどうか

32 :デフォルトの名無しさん:2010/01/07(木) 03:33:10
最善案
C++じゃなくC#或はJavaで書いてみる。
十分本質的なコードが出来た後にC++に移植する。
プログラムに課せられている問題と、C++特有の
技術上の問題がごっちゃになると難しい。(特に
VCは細かい技術上の配慮が必要で繊細)
(いきなりC++で完璧なコードを作ること自体に無
理がありそう。それなりにCやC#,Javaの経験があっ
たほうがいい)
C++コード書けるんだったらJava,C#の
コードを書くのはそれほど難しくは無い。
ただライブラリ関数の名前を覚えたり
調べたりするのがちょっと最初はきついかも

33 :デフォルトの名無しさん:2010/01/07(木) 04:04:28
どこが最善なのか。

34 :デフォルトの名無しさん:2010/01/07(木) 04:17:41
バグッたC/C++コードのデバッグだけはしないほうが
良い。精神衛生上問題が大有りだから。
仕様書がある限り、潔くそのコードを捨てて
書き直すのが最善。
JavaやC#とかのようなものでもそれが言える
C++だったら尚更。

35 :デフォルトの名無しさん:2010/01/07(木) 04:20:11
>>34
急がば回れ
でつねw

36 :デフォルトの名無しさん:2010/01/07(木) 05:06:19
プログラミング言語c++隅から隅まで読めば
>>14のコードじゃバグるのわかるだろ

37 :デフォルトの名無しさん:2010/01/07(木) 05:11:22
> ホントに、コーディングは正しいんです。
?

38 :デフォルトの名無しさん:2010/01/07(木) 05:20:48
Javaとかだったら
class c;

class[] c;
を混同しようものならコンパイルが通らないから
そういった系統のバグは発生しない点では初学者には優しいか...

39 :デフォルトの名無しさん:2010/01/07(木) 06:06:55
なるべく自分でメモリ管理しない
new C2[5] とかしないで std::vector<C2> を使う
添え字の範囲もチェックする

40 :デフォルトの名無しさん:2010/01/07(木) 07:31:38
クビになったらまた教えてね

41 :デフォルトの名無しさん:2010/01/07(木) 17:05:03
1は勤め先間違えたような感じが

42 :デフォルトの名無しさん:2010/01/07(木) 20:48:08
>>1 まず最初にするべきなのは、そげぶ
>ホントに、コーディングは正しいんです。
その幻想をぶち壊すこと。


43 :デフォルトの名無しさん:2010/01/07(木) 21:41:53
>>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
俺の指摘が正しかったようだ

48 :デフォルトの名無しさん:2010/01/07(木) 22:31:29
>>38あたりが良いヒントかな

49 :デフォルトの名無しさん:2010/01/07(木) 22:44:45
>>44 そげぶ
>コーディングとは別のところで良く陥るミスとかないですか。
その幻想をぶち壊さないと前に進めないよ。

とりあえず、落ちる最小のコードをupしてごらん。

50 :デフォルトの名無しさん:2010/01/07(木) 22:55:18
deleteで例外吐くときってポインタがマイナス方向に走ってヒープ壊してる以外にないよね

51 :デフォルトの名無しさん:2010/01/07(木) 23:06:54
>>44
まず、その「俺のノーミソは機能している」という幻想をぶち壊す。

> メモリ管理が間違っていて、誤った代入がされていたとしても、newで落ちますか?
相も変わらず、ぼくわるくないもん!!!か。

あらゆる参照可能なメモリにあらゆる値が存在しうる場合に発生しうる全ての現象が起こる。
電卓ソフトがメモリ破壊が原因で暴走し、突如モナリザの絵を200枚連続で
プリンタから出力することもありうる。しかもカラーで。

52 :デフォルトの名無しさん:2010/01/07(木) 23:07:26
>>12
VisualStudio2008はりリースモードでもデバッグ情報作るからデバッグできるよ。


53 :デフォルトの名無しさん:2010/01/08(金) 00:04:39
まぁ他人に問題解決頼むなら問題を発生させる最小のコードが必要だよね。
# とはいえそこまで出来たら後は自分で殆ど解決してしまうけど

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++を使うのは難しい


57 :デフォルトの名無しさん:2010/01/08(金) 09:10:57
「コンパイルが通る」=「完璧なシンタックスだ」=「おれは間違ってない!」とかよくある話で。

まあ向いてないんだろうね。

58 :デフォルトの名無しさん:2010/01/08(金) 09:12:25
main関数で他のルーチンに飛ばす部分を一切コメントアウトして適当な配列だけnewしてみたらどうなるの?

59 :デフォルトの名無しさん:2010/01/08(金) 09:32:20
C2のコンストラクタがぶっ壊れてんじゃねーの?

60 :デフォルトの名無しさん:2010/01/08(金) 10:29:40
アドヴァイスしてるやつも同類のアホだなw

61 :デフォルトの名無しさん:2010/01/08(金) 12:22:20
どういう条件で落ちるのかも正確に出てないのに解決なんてするわけ無いだろう。
どういう条件で落ちるのかも正確に書けない奴のコードが正しいはず無いだろう。

62 :デフォルトの名無しさん:2010/01/08(金) 14:09:29
メモリが破壊されるタイミングだと考えている瞬間よりもっと前にメモリアロケータの管理領域を破壊している
既に致命傷を受けていてdeleteでとどめを刺されているだけ

63 :デフォルトの名無しさん:2010/01/08(金) 15:42:11
おそらくbuffer overrun

64 :デフォルトの名無しさん:2010/01/08(金) 15:45:52
c[5]とか書き換えてるよね

65 :デフォルトの名無しさん:2010/01/08(金) 16:17:06
たぶんこれで壊れるんだろ。>>14のコードから見て
c1 = c2;
or
C1 c1(c2);

66 :デフォルトの名無しさん:2010/01/08(金) 19:14:47
VCでdebugモードで動いて、rekeaseモードで動かないってオレもあった気がする。
なにが原因だったかは忘れた。

これって人のプログラムを直してるの?
そうじゃなかったら、最後に動いた状態まで戻せないの?

67 :デフォルトの名無しさん:2010/01/08(金) 21:13:09
>>60
間抜けなことに、本人も「アドバイスしてるつもり」だから
余計タチが悪いよな。

68 :1:2010/01/08(金) 21:36:31
今日ちょっと進展がありました。

クラッシュを起こすクラスを使用するプログラムの、
落ちる部分とはぜんぜん違うところのとあるコードを変更したところ、
newやdeleteでのクラッシュが起きなくなりました。

変更したところは、その部分のテストでは特に問題なくて、
その部分でエラーが起きたこともないんですが、ちょっとその部分の
コードを変えました。

すると、突然、しっかり動き出しました。

解決したと思っていいのか、よく分からないですが、
今日のところは問題は起きてません。

69 :デフォルトの名無しさん:2010/01/08(金) 21:39:26
直したコードのところでヒープぶっこわしてたんだろ。参考までにプロジェクトの名前教えてくれ。見掛けても使わないようにするから。

70 :デフォルトの名無しさん:2010/01/08(金) 21:42:31
よくわかんないけど動いたのでこれでいいです

71 :7:2010/01/08(金) 21:53:55
まあ動けばいいよ。またエラー出たときに考えればいいよ。

72 :デフォルトの名無しさん:2010/01/08(金) 21:57:06
>>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 :デフォルトの名無しさん:2010/01/08(金) 23:25:52
ちゃんと動いてるんだから黙っててください

75 :デフォルトの名無しさん:2010/01/08(金) 23:30:59
>>74
え? 明らかに>>1のノーミソの不具合があるのに、
それによる観測結果が正しいだなんて誰が保証を(ry

76 :デフォルトの名無しさん:2010/01/08(金) 23:42:36
保証なんていらないし

77 :デフォルトの名無しさん:2010/01/08(金) 23:49:38
× ちゃんと動いている
○ 一見動いているように見える
◎ 動くか動かないか分からないが、今のところは落ちない

「ちゃんと動く」ってのと「今は落ちていない」の違いも理解できないのか?

78 :デフォルトの名無しさん:2010/01/08(金) 23:57:37
頻繁に落ちてたのが落ちなくなったなら99%直ってるよ

79 :デフォルトの名無しさん:2010/01/08(金) 23:57:48
別に言葉遊びしたいわけじゃないからどうでもいい

ちゃんと動くもちゃんと動いているように見えるも同じ

80 :デフォルトの名無しさん:2010/01/09(土) 00:05:41
今年はこういう白痴新人が入ってきませんように

81 :デフォルトの名無しさん:2010/01/09(土) 00:15:40
>>78,79
趣味のコードならそれでいいさ。誰も困らないからね。

>>80
この手のはマジで会社の寄生虫だよな…>>1のように他人のせいにして
学習せず原因を追求せず30過ぎても40過ぎても>>1と同レベルのコードを書く。

82 :デフォルトの名無しさん:2010/01/09(土) 00:55:17
>>81
別に>>1が汚いコード書こうが81は困らない
だからどうでもいいだろ。

おまえが>>1のコードで直接被害うけてるならともかく第三者のくせにごちゃごちゃいうなみっともない

83 :デフォルトの名無しさん:2010/01/09(土) 01:13:03
>>81の書き込みで被害を受けない>>82がごちゃごちゃいってみっともない件について

84 :デフォルトの名無しさん:2010/01/09(土) 02:50:21
動けば良い→企業人の鑑のようなハツゲンだが、後悔先に立たず
企業内でコードを書くことは少なからず責任を伴う。

どうしてうまくいかないのか悩む→学生の鑑のような行為だが
企業内で研究開発は兎も角、勉強や学習をするのは会社法に
抵触する犯罪。こちらのほうがずっと深刻で、こういうことが
まかり通っているとその会社は破滅の路を辿っていることになる。

85 :デフォルトの名無しさん:2010/01/09(土) 04:48:31
開発だよね

86 :デフォルトの名無しさん:2010/01/09(土) 10:58:55
>>84
つまり技術の無い奴は来るなということですね

87 :デフォルトの名無しさん:2010/01/09(土) 11:22:00
>>82
お前が一番みっともないんだけどな

88 :6:2010/01/09(土) 11:59:16
>>68
目処が付きそうで良かったね。

2chの中でもプログラム関係は本当に人を攻撃するのが好きだよね。

89 :デフォルトの名無しさん:2010/01/09(土) 12:56:29
単発質問スレを立てた上に、言われた内容を理解できない馬鹿は叩かれて当然だけどな

90 :デフォルトの名無しさん:2010/01/09(土) 17:10:51
>>86
会社に相当する団体が大杉なんだこの国は

91 :デフォルトの名無しさん:2010/01/09(土) 20:27:39
異常終了の原因は100%メモリ管理なので、
メモリ管理を指摘するだけのコメントはアドバイスにならない

92 :デフォルトの名無しさん:2010/01/09(土) 21:01:46
でも本人が
ソースは見せられませんが私の書いたコードは間違っていません! VC++のバグです! それ以外の答えはお断りします! って言ってるんじゃねぇ。メモリ管理のバグがなんにせよ、問題の箇所が見えなきゃアドバイスも何もないよ

93 :1:2010/01/09(土) 22:32:34
仕事があまりにも遅れてるので、今日も出社してました。
今のところ、問題は再発してません。
アドバイスを下さった方々、ありがとうございます。

今回のように、newで落ちる(またはdeleteで落ちる)という
デバッグが極めて難しい状況に陥った時、うまくデバッグする
方法はあるでしょうか。

しかも、今回はたまたま問題箇所が見つかりましたが、
落ちるクラスを使用する部分と全然違う部分のコードが
原因でした。

このような時にどようにデバッグするのがいいのか
アドバイスをいただければと思います。

よろしくお願いします。

94 :デフォルトの名無しさん:2010/01/09(土) 22:34:59
>>93
> デバッグが極めて難しい状況に陥った時、うまくデバッグする方法はあるでしょうか。

端的に言うと「発生させるな、レビューと実装規約で抑えろ」だ。だがお前には無理だ。
お前のように正しいと決めつける奴、つまりお前には無理だ。
絶対に正しいレビューはできない。絶対にお前には無理だ。

95 :デフォルトの名無しさん:2010/01/09(土) 22:55:59
仕事をわざと遅らせ、残業代稼ぎの為の出社だと
会社の人は見ています。下手すると詐欺で告訴
されるかもしれません。

96 :デフォルトの名無しさん:2010/01/09(土) 23:00:45
素人はJavaでも使ってればいいのに

97 :デフォルトの名無しさん:2010/01/09(土) 23:11:46
C/C++コンパイラでコンパイル時に警告が出ているコード
は既にある程度バグを含んでいるとすら言える。

>>1はこのスレを立てた段階のコードをまだ持っていれば
再度コンパイルしてみれば?
多分警告が多数出てる筈。その警告の原因一個一個潰すと
エラーの原因がわかる筈。

98 :デフォルトの名無しさん:2010/01/09(土) 23:26:15
JavaはC++がまったくわからんって人が使うと
危険だろ

99 :デフォルトの名無しさん:2010/01/09(土) 23:27:29
valgrindみたいなツールでメモリの不正アクセス箇所を探せばいいんじゃねえの
Windowsにおけるvalgrind相当のツールは知らんけど

100 :デフォルトの名無しさん:2010/01/09(土) 23:32:44
最近は、C++はおろかCも打てないJavaプログラマ多いだろ

101 :デフォルトの名無しさん:2010/01/09(土) 23:38:09
>>95
俺の先輩で、数万円の残業代稼ぎに腹を立てた
アホ監査役のせいか、クビになっただけでなく
億単位の損害賠償を民事で引っ掛けられた人
知ってるんで、コードが動かないから残業しよう
なんてことはしないほうがいいんじゃないか..

102 :デフォルトの名無しさん:2010/01/09(土) 23:58:03
>>101
俺の先輩では動かないコードを放置して有給休暇を取って
旅行に行ったらその間に勝手にリリースされちゃって
客先がそのソフトを使って事故を起こしてしまったらしく
警察沙汰(業務上過失致死傷のカドで逮捕者も出たらしい)
になったらしいから、コードが動かない、或いは問題を含む
ことを知りながら放置するのだけはやめたほうがいいと思う
ね。

103 :デフォルトの名無しさん:2010/01/10(日) 00:56:45
>>101
>億単位の損害賠償を民事で引っ掛けられた人
損害賠償請求権等不存在確認請求訴訟を起こすべきレベル

104 :デフォルトの名無しさん:2010/01/10(日) 01:44:08
で敗訴したら名誉毀損という刑事訴訟法上の犯罪になると...

105 :デフォルトの名無しさん:2010/01/10(日) 10:39:41
結局サー残するのが一番マシなんですね…

106 :デフォルトの名無しさん:2010/01/10(日) 12:24:25
このスレまだあったんだ

107 :デフォルトの名無しさん:2010/01/10(日) 14:28:41
>>68がどうやってバグを見つけたか知りたい

108 :デフォルトの名無しさん:2010/01/10(日) 14:34:43
どう直したかを知りたい

109 :デフォルトの名無しさん:2010/01/10(日) 14:40:32
今は日本語不自由な給料安く働いてくれる中国人のほうが
自称プロよりよっぽど良い。

日本人はよっぽどスキル高くないと雇われん

110 :デフォルトの名無しさん:2010/01/10(日) 14:51:26
>>108
それ以前にどういうバグだったのかを知りたいわ。
こんなエスパー相手にしているようなスレ立てるやつにプログラム書けるわけない。

111 :デフォルトの名無しさん:2010/01/10(日) 15:51:37
日本人の未経験者に払う安い賃金のさらに半額未満で
情報工学の修士が雇えたりする

112 :デフォルトの名無しさん:2010/01/10(日) 15:57:15
いや、もともと 1 は自分のコードが正しいとか言っているので、
特にプログラムなんかいじってなくて、
別のメモリーがたっぷり積んであるマシンで動かしたら落ちなかったとか、
メモリ常駐のプログラムを増やしたり減らしたりしたら落ちなくなったとか、
そういう話なんじゃないかな?

113 :デフォルトの名無しさん:2010/01/10(日) 15:57:21
使えるかどうかは...

114 :デフォルトの名無しさん:2010/01/10(日) 17:04:06
>>45
情報処理うかったくらいで一流プログラマの仲間入りしたつもりなら大間違い。

115 :デフォルトの名無しさん:2010/01/10(日) 17:38:06
あの文章のどこからそんな慢心が読み取れるのだ

116 :デフォルトの名無しさん:2010/01/10(日) 17:41:47
その文章に限らず
> コーディングは何度も何度も見直しました。
> 間違っていません。
これほど傲慢な質問者は他にいない

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にしたり、ちょっと行を入れ替えたり、式の形を変えたり
して持って来るので、私がコードレビューして、ちょっと気になる
ところがあったので、ループと分岐の作りを変えてもらうと、
異常終了が起こらなくなりました。

なので、その部分のコードにメモリを破壊する何らかの原因があったん
だろうと思っています。

120 :デフォルトの名無しさん:2010/01/11(月) 01:41:59
>>1はプログラマになって何年目なんだろうか

121 :デフォルトの名無しさん:2010/01/11(月) 01:41:59
コンパイラを変えてやってみた?
GCCやらBCCやらDMCやらいろいろあるだろ?

122 :デフォルトの名無しさん:2010/01/11(月) 01:46:58
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものではありません。

アイと研究員とのやり取りに利用するスレッドではないので、
関係者以外も書きこんで下さい。

                  京都大学霊長類研究所

123 :デフォルトの名無しさん:2010/01/11(月) 01:49:58
ループの回数が間違ってたとかそんなとこだろ。<=を<で書いたり

124 :デフォルトの名無しさん:2010/01/11(月) 01:55:48
これ、職場の人間関係的には迷宮入りした方がうまくいきそうだな。

125 :デフォルトの名無しさん:2010/01/11(月) 02:09:51
赤の他人にこの程度の情報でバグ出しをお願いできると思っているヤツなんだから、
職場の同僚にどういった頼み方をしたのかは推して知るべしだな。

126 :デフォルトの名無しさん:2010/01/11(月) 05:45:08
兎に角>>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が混合しているとかないですよね?
そういうのが考慮された造りなら問題ないけど、何も考えていないとメモリの取得や開放で異常終了します。

128 :デフォルトの名無しさん:2010/01/11(月) 07:56:44
>>14が糞コードすぎる

129 :デフォルトの名無しさん:2010/01/11(月) 08:04:40
>>117
な?やっぱりお前には無理だろ。

リーク系の不具合は追跡困難だから発生させるな。
だが、お前みたいな奴には発生を未然に防ぐことなんてできない。

お前には無理だ。

130 :デフォルトの名無しさん:2010/01/11(月) 08:23:48
>>127
>基本的なコードの誤りは無いのでしょう
いやその例、完璧にコードの誤りだし。
DebugとReleaseで挙動が違うのは、よくある「間違ってるけどたまたま動いてしまっている」って奴だろ。

それにしても、>>1みたいなくだらないバグを3ヶ月も放置しても平気なんて、
世の中オレが思っているより平和なのかねえ。

そして、これほどの低レベルの奴らが平気でCやC++という危険な言語を触っていることに戦慄するよ。
オレが社長ならこいつらは当分LLしか触らせないけどな。

131 :デフォルトの名無しさん:2010/01/11(月) 08:31:28
社長なら首にしようぜw

132 :デフォルトの名無しさん:2010/01/11(月) 08:59:04
俺が社長なら能力不足を理由に首にしたうえに人事部長を懲戒するレベル

133 :デフォルトの名無しさん:2010/01/11(月) 09:43:43
そして安く働いてくれる優秀な中国人労働者を雇う

134 :デフォルトの名無しさん:2010/01/11(月) 10:36:34
悪いのはSじゃん
>>1は悪くないじゃん

135 :デフォルトの名無しさん:2010/01/11(月) 10:55:22
どうみても>>1の頭と性格が悪いじゃん。
いきなり>>1で「コードは絶対正しいんですぅ!」
解決しても「ぼくの書いたコードじゃないんですぅ!ぼく悪くないんですぅ!」
終始責任逃れに徹して、二束三文の自分のプライドを守ることに執着している。

これによりスレでメモリ破壊を指摘されてもなおも解決できず、時間を無駄に費やした。
さらに俺がSの立場でも、>>1見たいな責任の押し付け合いをするクソ野郎相手には
「何だよバグはお前だろ」「人のせいにするのかよ」っていうわ。
たとえ自分のコードの不具合であっても、足手まといには無駄な作業をさせた方が全体にとって利益だからな。

>>1みたいな奴が開発チームにいたらPM権限発動して隔離部屋で個人作業させるわ。

136 :デフォルトの名無しさん:2010/01/11(月) 10:59:28
頼んでも調査しないSが悪いだろ

137 :デフォルトの名無しさん:2010/01/11(月) 11:08:34
Sが悪い、なんて判断は早計だ。
このスレの人には>>1>>1の立場で書いた情報しか与えられていないのだから。
そして>>1が他人に責任を押し付けるような奴だってのは周知の事実。

確実に>>1にとって都合の悪い事実が捻じ曲げられている & 隠蔽されているだろうな。

138 :デフォルトの名無しさん:2010/01/11(月) 11:13:05
技術的な話が終わったなら、sage進行でお願いできますでしょうか。

139 :デフォルトの名無しさん:2010/01/11(月) 11:43:26
そうはいくかい

140 :デフォルトの名無しさん:2010/01/11(月) 13:36:50
>>118
> なので、Sさんの方に問題があるのではないかと思い、Sさんに原因調査を依頼しました
原因がどちらにあるか切り分けもせず「俺は悪くないからお前のせいだろ!」なんてそりゃ誰でも調査を断るわw

141 :デフォルトの名無しさん:2010/01/11(月) 13:42:19
コーディングが正しくて、プログラムが正しく動かないという事は、コンパイラが間違っているのだろう。
お前の責任じゃないから、コンパイラが悪いと主張すればクビにはならないよ。

142 :デフォルトの名無しさん:2010/01/11(月) 13:42:22
でもSさんも自分のコードに問題が無いと思ってる糞だろ

143 :デフォルトの名無しさん:2010/01/11(月) 13:55:13
でも>>1みたいなアホに「俺のコードは絶対正しいだ。お前のコード間違っている」って言われたら
お前らだって「お前のコードが正しいはずないだろボケ!」と答えるだろ?

144 :デフォルトの名無しさん:2010/01/11(月) 14:00:10
でもライブラリ単体でエラーでないんだったら見てやるのがSだろ
まったくダメなSだ

145 :デフォルトの名無しさん:2010/01/11(月) 14:04:56
>>1がSに責任転嫁するために書いた情報でSが悪いと言っている人たちって…馬鹿?

146 :デフォルトの名無しさん:2010/01/11(月) 15:19:24
コンパイルが通る = 正しいコーディング
だと思っている時点で頭がおかしい

147 :デフォルトの名無しさん:2010/01/11(月) 16:42:31
int x;
int* p;
p=&x;
p[10000]=500;
これもコンパイルはとおるな

148 :デフォルトの名無しさん:2010/01/11(月) 16:55:22
>>1が正しいと言っているのだから疑ってはいけない。

149 :デフォルトの名無しさん:2010/01/11(月) 17:22:55
そうだそうだ

150 :デフォルトの名無しさん:2010/01/11(月) 17:49:07
俺ならSみたいなやつは切る

151 :デフォルトの名無しさん:2010/01/11(月) 17:52:20
>>147
それはデバッグ版でも動かないだろう
デバッグ版では動いてリリース版では動かない理由を考えないと

152 :デフォルトの名無しさん:2010/01/11(月) 18:02:25
p[1]ならDebugで動くんじゃない?

153 :デフォルトの名無しさん:2010/01/11(月) 18:42:51
ちょうどデバッグ用に取られた領域を書きつぶしてて実行できたんじゃないの

154 :デフォルトの名無しさん:2010/01/11(月) 22:19:35
デバッグ版とリリース版でメモリの初期化状況が違うんじゃねーの?
変数はちゃんと初期化してからつかおーね

155 :デフォルトの名無しさん:2010/01/11(月) 22:29:05
デバッグ版は未初期化のところはフフフフで埋められるからな。

char s[100];
printf("(´ー`)%s", s);

(´ー`)フフフフフ…

156 :デフォルトの名無しさん:2010/01/12(火) 02:58:40
>>126
前々から噂にはなっては消えてる話だろ?
VC(.NETになる前)のmalloc辺りに問題があって
alloc/deallocを数十億回繰り返してフラグメンテーションが
発生すると落ちる場合があるって噂
嘘くさいと思ってる(メモリデフラグソフトがデビューしだした
頃の噂だから)

157 :デフォルトの名無しさん:2010/01/12(火) 03:11:12
>>156
ネットがADSLになって普及した2000年代前半の頃
盛んにホットフィックスが行われたが少なからず
メモリ周りのセキュリティーホールフィックスが
行われたらしいがその際にバグが混入したとかしなかった
とか聞くね。そのせいかどうか知らんが、ウチの会社では
端末も基幹もWindowsだけど、端末から基幹のほうには
telnetでしか接続出来なかったりしてる(端末はしっかり7
が入っているが、基幹は未だにWindows NT4.0 Server )

158 :デフォルトの名無しさん:2010/01/12(火) 05:25:08
もう少しまともな改行しろ

159 :デフォルトの名無しさん:2010/01/12(火) 07:29:43
そういえばメモリのデフラグってだれがやってるの?
勝手にスワップしてデフラグされるの?

160 :デフォルトの名無しさん:2010/01/12(火) 08:06:45
>>159
ここでのフラグメンテーションは、プロセスメモリ空間上での
話で要するにmalloc/freeなどのライブラリヒープマネージャー
が管理する情報が混乱した状態になる事だろ。
VCみたいなメイジャーなコンパイラとかじゃまずありえないん
じゃね?

161 :デフォルトの名無しさん:2010/01/12(火) 08:18:38
俺が気にする必要は無いってことですね?


162 :デフォルトの名無しさん:2010/01/12(火) 08:34:44
>>161
否、気にすべきで、コード記述に便利だからとか奇麗だから
という理由だけでC++とかで安直にクラスの下にクラスを
何層にもぶら下げてるような設計にしてたりすると
new/deleteの回数が増えて、ヒープマネージャに負荷がかか
って、デーモンとかサービスのように途中終了する機会がなく
長時間動作させるようなアプリではシステムによっては、
パフォーマンスが突然滅茶苦茶落ちてフリーズ状態になる
可能性がある
と昔、習った。

163 :デフォルトの名無しさん:2010/01/12(火) 17:43:09
>>162
可能性があるだけですね?
どのみちWindowsUpdateで再起動するし問題ないですね

164 :デフォルトの名無しさん:2010/01/13(水) 03:04:33
>>1
は早くソース晒せ

165 :デフォルトの名無しさん:2010/01/13(水) 05:20:02
>>157
>telnetでしか接続出来なかったり
セキュリティも糞もねぇなw

166 :デフォルトの名無しさん:2010/01/13(水) 05:24:58
>>159
何をトンチキなことを…
アプリケーションがポインタ直接保持してんのに
勝手に移動されたらどーすんだよ。ハンドルならいざ知らず。

167 :デフォルトの名無しさん:2010/01/13(水) 06:01:25
今や SSHは敢えてTelnetと区別しないだろ
PuttyとかTera-SSH使っているとでもいいたいんだろ

168 :デフォルトの名無しさん:2010/01/13(水) 16:39:29
>>167
区別するっつーのwどういう職場なら区別しないんだ。
telnetはtelnet。sshはsshだ。

169 :デフォルトの名無しさん:2010/01/13(水) 17:57:54
TelnetクライアントのSSH通信対応版も
Telnetと区別しないで伝統名称Telnetと
呼ぶ職場も多いね。
んなことよりもソース晒さないの?

170 :1:2010/01/13(水) 22:03:16
出張していたため、暫く2chできませんでした。

>>126,>>164
申し訳ございませんが、コードのアップは控えさせて下さい。
それに、今回の問題の本質は、コードがどうだったかよりも、
異常終了するコードの箇所と全く違う部分のコードが原因と
なっていることもあり、そのような場合にプログラマはどう
デバッグすればいいかと言うことだと思います。

>>127,>>151
デバッグであってもリリースであっても、動かない場合は
基本的にはコードに問題があると思っています。変数の
初期化や配列インデックス値の不正はよくあるミスです
ので注意しています。デバッグ版の場合はデバッグ用の
領域が広くとられているため、バグが表面化しない場合が
あるということなんだろうと思います。

>>128
どう糞なのか教えてください。
14で示したコードはnewやdeleteで落ちるものだから、
その部分の概要が分かるように簡略化して書きました。
それとも、STLやスマートポインタを使ってないことが
糞なのでしょうか。

171 :デフォルトの名無しさん:2010/01/14(木) 01:12:35
コードもきちんと検証せんとまた同じ事繰り返すかもしれんよ?

172 :デフォルトの名無しさん:2010/01/14(木) 02:37:15
自分で正解にたどり着けたんなら「なぜそれを最初に行わなかったか」それが君の課題じゃないの
言い訳するなら俺らに対してじゃなく会社にすべきだよね。まあどうでもいいけど

173 :デフォルトの名無しさん:2010/01/14(木) 03:50:44
>そのような場合にプログラマはどう
>デバッグすればいいかと
まともな人ならちゃんとデバッガ駆使します。

174 :デフォルトの名無しさん:2010/01/14(木) 04:21:03
>>1
Windowsマシンは安価故、大量生産されて世のPCの95%以上がWindowsマシンであることは一般常識であることは言う迄もない
が、それらは決定的に重要なところに使われているわけでもない
が故に、バグがあると影響がゆっくりと現れて、数が多いが故に
中々取れないんで、バグの存否情報は大きな社会問題に発展する
可能性を秘めている。
会社と君の関係の問題も重要だがWindowsの重要なライブラリの
バグではないかという主張を公開ネット上で一つのスレを使って
主張した以上、多少時間がかかってもいいからその状況を可能な
限り忠実に再現できるファイルセットをアップして真相が決定で
きるようにして欲しい。もちろん君がどの会社のどの部署に
所属しているのか絶対にわからないように変数や関数の名前を無
意味な英数字にするとかそういう工夫は必須だしそうしても貰わ
ないとこの板の住人にも迷惑がかかる。

175 :デフォルトの名無しさん:2010/01/14(木) 08:31:07
> STLやスマートポインタを使ってないことが糞なのでしょうか。
知識の不足なんてさして問題じゃない。
察しの良い奴ならすぐに学習するからな。

メモリ破壊を指摘されても「僕悪くない!!」に徹した
技術屋としては最低最悪な外道だから糞なんだよ。

176 :デフォルトの名無しさん:2010/01/14(木) 09:10:13
>>175
コードの話をしてるんじゃなかったのか?w

177 :デフォルトの名無しさん:2010/01/14(木) 13:03:29
ここまで読んでみましたが、ライブラリというより、呼び出し元が原因ぽいんですよね。
どういうことをしていて、newで落ちてたようだ、ということだけでも書いていただければ、勉強になるんですが。
はっきりしないんでしょうかね。

178 :デフォルトの名無しさん:2010/01/14(木) 13:04:56
>>170
>>43

179 :デフォルトの名無しさん:2010/01/14(木) 19:15:38
>>170 >>1
Visual Studio デバッガ ネイティブ コードのデバッグ
http://msdn.microsoft.com/ja-jp/library/k70yt3e2.aspx
Visual Studio デバッガ メモリ リークの検出と特定
http://msdn.microsoft.com/ja-jp/library/x98tx3cf.aspx

↑のリンク先をよーく読んで
とりあえず_CrtSetDbgFlag()でも入れとけ

180 :デフォルトの名無しさん:2010/01/14(木) 20:20:17
>>177
御託並べてないでさっさとソース晒せよ

181 :デフォルトの名無しさん:2010/01/14(木) 21:18:56
>>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() ....;
};



182 :デフォルトの名無しさん:2010/01/14(木) 21:29:32
>>181
糞コードw

183 :デフォルトの名無しさん:2010/01/14(木) 21:41:03


184 :デフォルトの名無しさん:2010/01/14(木) 22:04:05
>>181
何でvectorつかわねーんだ

185 :デフォルトの名無しさん:2010/01/14(木) 22:09:04
STL使わずに書いてみた。
>>184 STL版のサンプルよろしく

186 :デフォルトの名無しさん:2010/01/14(木) 22:10:40
>>181
メモリリークする。
多重deleteが防げてない。
例外も防げてない。
メモリ不足?

187 :デフォルトの名無しさん:2010/01/14(木) 22:13:22
あーあ可哀想に
C++BuilderならCodeGuardで一発なんだがな
どうせDebug版にもバグあるよそれ
それがRelease版で顕在化しただけ

188 :デフォルトの名無しさん:2010/01/14(木) 22:26:21
>>185
STL使わない意味ってなんかあんの?

189 :デフォルトの名無しさん:2010/01/14(木) 22:35:12
>>185
>>72

190 :デフォルトの名無しさん:2010/01/14(木) 23:00:21
Cはよい言語だ。アセンブラよりずっと簡単に書けるのに、アセンブラよりそれほど遅くない。
C++ with STLも悪くない。Cよりずっと簡単に書けるのに、Cよりそれほど遅くない。
だいぶコードサイズが大きくなるけどな。
だが、C++ without STLは最悪だ。そんなものを使うくらいなら、別の言語を使ったほうがマシだ。

191 :デフォルトの名無しさん:2010/01/14(木) 23:14:11
それ読む限り
C++ With STLが一番じゃん。
昔みたいにCPUもメモリも貧弱だったならともかく
CPU高速メモリあまりすぎの現状速さなんてたいして問題にならん。

192 :デフォルトの名無しさん:2010/01/14(木) 23:19:07
世の中メモリもディスクも無限にあるマシンばかりじゃないのだよ。
DSやPSPでSTLバリバリのコード書いたらすぐにメモリはパンクしてしまう。

193 :デフォルトの名無しさん:2010/01/14(木) 23:20:40
>>191
組み込み環境の事も忘れないであげてください。

194 :デフォルトの名無しさん:2010/01/14(木) 23:29:43
>>190
同意

195 :デフォルトの名無しさん:2010/01/15(金) 02:24:54
何?Embedded C++に喧嘩売ってるの?

196 :デフォルトの名無しさん:2010/01/15(金) 03:48:10
>>180

197 :デフォルトの名無しさん:2010/01/15(金) 05:31:17
取り敢えず
>>1の返答待ちと言う事で.
WindowsのVCコンパイラが生成した正当なプログラムが
ライブラリの未発見のバグで突然オチることがあるという
のが本当なら結構なニュースバリューがあるし...>>1
発見者として大感謝されるかも...

198 :デフォルトの名無しさん:2010/01/15(金) 08:39:58
ちょっと視点を変えようか。
プロジェクトの設定による違いって事は無いかな?


199 :デフォルトの名無しさん:2010/01/15(金) 17:23:58
バッファオーバーランに設定も何もないと思うけど

200 :デフォルトの名無しさん:2010/01/15(金) 23:19:37
>>1がバグという可能性は?

201 :1:2010/01/15(金) 23:23:02
>>174, >>197
私は、Windowsにバグがあると言った覚えはありません。
落ちる部分のコードを何度見直しても合ってるのに
それでも異常終了するという症状に困っていると言いました。
実際は、クラスC1を使うプログラムの、クラスC1を使う
部分と全く別のコードが原因でした。
WindowsあるいはVCのバグではありません。

202 :デフォルトの名無しさん:2010/01/15(金) 23:32:17
動的確保する用のポインタをクラスに持ってるのに
コピコンを書かない理由がわからない

203 :デフォルトの名無しさん:2010/01/15(金) 23:40:26
>コピコンを書かない理由
「コピーすることがないから」は立派な理由だろう。

204 :デフォルトの名無しさん:2010/01/16(土) 00:09:06
>>201
もう最適化やめちゃいなよ

#pragma optimize("", off)

205 :デフォルトの名無しさん:2010/01/16(土) 00:13:50
>>203
その場合、書かない(=デフォルト)のではなく、privateかリンカエラーにするんじゃないか?

206 :デフォルトの名無しさん:2010/01/16(土) 00:33:06
>>203
privateなりにして作っておかないとコンパイラが勝手にpublicで作るよ。
そして誰かがそのオブジェクトのコピーをして死ぬほどめんどくさくなると。
operator=も同上。

207 :デフォルトの名無しさん:2010/01/16(土) 01:54:04
コンパイラにバグがある事はまずない(あっても大抵全て既知の問題)
もし問題が再現する最小のプログラムが書けたらコンパイラメーカが
修正してくれる可能性は大いにあるが、そうでなければ無視される

208 :デフォルトの名無しさん:2010/01/16(土) 09:28:21
>>97
> C/C++コンパイラでコンパイル時に警告が出ているコード
> は既にある程度バグを含んでいるとすら言える。

そこまで言い出すとオープンソースなんかほぼ全滅だろ。

209 :デフォルトの名無しさん:2010/01/16(土) 10:25:02
オプソはシステム抽象化、標準化が行き着くところ迄行っている
UNIX環境の最大の強み。非純正開発環境でmakeして当然出てくる
ワーニングを無視しても殆どが遜色無く動くからオプソが成立
しており膨大な数のソフト資産が形成されてる。

210 :デフォルトの名無しさん:2010/01/16(土) 10:54:51
>208
まともなプロジェクトならウォーニングはほとんど出ないよ。
オープンソースの場合は、「動けばいい」じゃないから。

211 :デフォルトの名無しさん:2010/01/16(土) 11:44:59
boostはまともなプロジェクトじゃないんですかそうですか

212 :デフォルトの名無しさん:2010/01/16(土) 12:20:20
>>211
boostは完全C++準拠
boostで警告が出るならコンパイラの問題

213 :デフォルトの名無しさん:2010/01/16(土) 13:10:49
>>212
お前はGCCが糞だと言うのか。
だったら何を使えと言うのか?

214 :デフォルトの名無しさん:2010/01/16(土) 14:36:29
>>213
http://www.boost.org/development/tests/trunk/developer/summary.html

まあこれでも見て考えや

215 :10:2010/01/16(土) 15:02:23
>>212
boostはコンパイラのベンダ拡張使いまくりですけど。
それで、VCもICCも警告でまくりですけど。


216 :デフォルトの名無しさん:2010/01/16(土) 20:46:35
201の発言をみて怖くなった。
この人は原因を把握しているのだろうか?
「落ちなくなったから正常に違いない」なんだろうか?
今までは「潜在的なバグがあるが偶然デバッグ版で動いていたがリリース版では動かなかった」で、
今は「潜在的なバグがあるが偶然デバッグ版でもリリース版でも落ちない」ではないだろうか?

最後に聞かせて欲しい。
不具合の原因はなんだったの?
初期化漏れ? コードの誤り?
「全く関係ないところを直したら落ちなくなりました」は原因じゃないですよ。

217 :デフォルトの名無しさん:2010/01/16(土) 20:50:07
debug版だと勝手に初期化されてたまたま動くことがあるね
release版で死ぬなら初期化漏れかあるいはメモリ破壊だろ

218 :デフォルトの名無しさん:2010/01/17(日) 12:53:27
ライブラリ作成が仕事でも自分の作ったライブラリをテストランするプログラムぐらい書くよな?

219 :デフォルトの名無しさん:2010/01/17(日) 13:09:14
いくらテストランしたところでメモリ壊されたら対処のしようがないよね

220 :デフォルトの名無しさん:2010/01/17(日) 13:54:40
Sさんのプライドを守ってあげるような言い方で協力を要請すべきだったな
プログラム云々より人間関係の信頼構築に失敗している

221 :デフォルトの名無しさん:2010/01/17(日) 14:37:23
プライド?ヘボグラマの癖にプライドも糞もないわい

222 :デフォルトの名無しさん:2010/01/17(日) 15:10:52
プライドなんか関係ない。認めざるを得ない証拠を突き付ければOK

223 :デフォルトの名無しさん:2010/01/17(日) 15:22:40
ボンクラの>>1にそんなことができると思って(ry

そもそもSの書いた部分に原因があるとも、直ったのかどうかすら分からない。
しかも>>1はSに責任を擦り付けるためだけの情報しか書いていない。

224 :デフォルトの名無しさん:2010/01/17(日) 16:36:13
Sのコード直したらたまたま直ったってだけで>>1のコードはまだ白じゃないだろ

225 :デフォルトの名無しさん:2010/01/17(日) 16:46:20
何ヶ月も同じところで躓いたまま進まないことってあるのか

226 :デフォルトの名無しさん:2010/01/17(日) 16:52:11
少なくともnew/deleteではありえない。その前にクビになる。

227 :デフォルトの名無しさん:2010/01/17(日) 21:41:03
>>225
そんだけボンクラなんだろ。両者とも。
そんなことが許されてるからボンクラなままだとも言える。

228 :デフォルトの名無しさん:2010/01/19(火) 00:30:23
以前あるプロジェクトで>>14みたいなコード書いて関数に値渡してたバカがいたよ。
そいつも一週間は格闘してたな。しかも露見した時の言い訳がひどかった。
参照渡しにするのを忘れたとか何とか。
コピー代入禁止にしとけばすぐに発見できることなのにな。
まあ>>1が同じ事してないことを祈るよ

229 :デフォルトの名無しさん:2010/01/19(火) 12:46:20
ボンクラ再生産
ボンクラ(ボンクラ&)
ボンクラ operator = (ボンクラ&)

230 :1:2010/01/19(火) 19:58:17
>>14のコードが糞だという意見がとても多いですね。
どう糞なのでしょう。
大半の方はSTLやスマートポインタを使っていない
から糞だといっているようです。
>>228の方は「>>14みたいなコード」(ダメなコードの意味だと思いますが)の
何がダメなんでしょうか。

231 :デフォルトの名無しさん:2010/01/19(火) 20:52:13
コピーを考慮しないからじゃないですかね。

232 :デフォルトの名無しさん:2010/01/19(火) 21:19:04
>>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ならそっちの方がわかりやすいメッセージが出るだろ
何が起こるか予想できるよな?

233 :デフォルトの名無しさん:2010/01/19(火) 22:31:54
>>230
初期化子を使ってないとかnew失敗でNULLが返ってくる前提とか
初期化メゾットをコンストラクタで呼ばないとか
さんざん言われた設計だけでなく実装段階でもクソだ

234 :デフォルトの名無しさん:2010/01/19(火) 22:41:03
>>1がソース晒さない限り、VC++のバグということで..
また 都 市 伝 説 が一つ増えたというわけだ。

235 :デフォルトの名無しさん:2010/01/19(火) 23:13:10
クソみたいなコードを量産する前に、
せめてEffective C++ぐらい読んどけ

236 :デフォルトの名無しさん:2010/01/19(火) 23:53:54
>>1
^^

237 :デフォルトの名無しさん:2010/01/20(水) 21:50:18
>>232

デバッグ版で動いてリリース版で動かない例にはなってないな

238 :デフォルトの名無しさん:2010/01/20(水) 22:14:49
ttp://msdn.microsoft.com/ja-jp/library/dykf6bx9(VS.80).aspx

239 :デフォルトの名無しさん:2010/01/21(木) 00:24:49
>>230
> 大半の方はSTLやスマートポインタを使っていないから糞だといっているようです。
アホすぎる。何が悪いと言われているのに理解できないお前のノーミソなど
味噌糞一緒くたにしてしまえ。そのノークソが一番糞だ。

たまにいるよな、これぐらい酷いアホ。
自分が理解できていないことを理解できないアホは救いようがない。

240 :デフォルトの名無しさん:2010/01/21(木) 01:03:32
>自分が理解できていないことを理解できないアホは救いようがない。

世の中の殆どの人間がそうなんだが

241 :デフォルトの名無しさん:2010/01/21(木) 01:06:18
>>1
なんか騒動になってるぞ。株式市場とかにも影響してくるから
釈明の意味でソース晒したほうがいいんじゃね?(情報漏れは
無いようにな)

242 :デフォルトの名無しさん:2010/01/21(木) 01:38:50
>>241
おまえがその騒動とやらのソースをさらせよ

243 :デフォルトの名無しさん:2010/01/21(木) 02:30:58
この手のスレはチンパンジーアイちゃんが出てから10程度
でオチるのが常。
しかしこの伸びは異常。やっぱし何かあるからだろな。

244 :デフォルトの名無しさん:2010/01/22(金) 10:50:24
なんかの手違いで.hと{.obj|.dll|.lib}の不整合が起きてたと予想。
.objや.lib内ではnon-virtualなメソッドが最新の.hではvirtualになってたみたいな。
プリコンパイルヘッダの仕組みを理解せずに使ってたとか、
同じ.hに依存する2つのライブラリのビルドの整合がとれてないとか。


245 :デフォルトの名無しさん:2010/01/23(土) 01:51:42
れすみないでかくけどはいれつのきょうかいこえてかきこんでるときに
にたようなしょうじょうおこるよね
でばっぐだとあいだにまーじんとってくれるからもんだいおきなかったりするし
printfいれるとうわがきされるいちがかわるからばぐはっしょうするし
はいれつをじさくarrayにおきかえてoperator[]じっそうして
きょうかいちぇっくやったらだいたいつかまるきがする

246 :デフォルトの名無しさん:2010/01/23(土) 01:56:41
>>1は逃亡したつもりなのかもしれないが...

247 :デフォルトの名無しさん:2010/01/24(日) 14:54:08
>>233
>設計だけでなく実装段階でもクソ

意味不明

248 :デフォルトの名無しさん:2010/01/24(日) 15:32:17
「リゾット」あるいは「メゾネット」なら知ってるが、「メゾット」は俺も解らない。

249 :デフォルトの名無しさん:2010/01/24(日) 18:15:55
おまえらドSだな

250 :デフォルトの名無しさん:2010/01/24(日) 20:02:24
チンパンジーが何で関係あるの?

251 :デフォルトの名無しさん:2010/01/24(日) 20:20:36
チンパンジー

252 :デフォルトの名無しさん:2010/01/29(金) 12:10:34
>>1ですが
やっぱりコンパイラのバグだと思います。
Oilly Debugとかなんとかいうツールで生成コードを
見せてもらった至る所で違ってました

253 :デフォルトの名無しさん:2010/01/29(金) 13:05:48
それならMSに報告しておいてくれ
次のバージョンでは直してもらえるかもしれない

254 :デフォルトの名無しさん:2010/01/29(金) 14:07:49
次はムリ。次の次だな。

255 :デフォルトの名無しさん:2010/01/29(金) 14:14:24
>>1
VCなどのコンパイラに感染するウィルスがあるって噂
を聞いた事ががあるんで、ウィルスチェック。
そんじょそこらのウィルスチェッカーじゃ弱くて
OSをインストールした直後で一切ネットに繋げていない
状態で、インストール元CD−ROMのパッケージを全部
こじあけてHDに展開して、すべてのファイルについて
MD5をとっておく。
(MD5データのみUSBメモリに保存しておく)
開発マシンの同名ファイルのMD5を取って比較する。
出来ればMD5だけじゃなく他のその手のチェックサム
を合わせて取って比較チェックしたほうがいいかも

256 :デフォルトの名無しさん:2010/01/29(金) 16:54:32
このバグ既に報告済みだから

257 :デフォルトの名無しさん:2010/01/29(金) 20:59:32
その生成コードとやらの掲載よろしく

258 :デフォルトの名無しさん:2010/01/31(日) 22:55:15
>>1
とりあえず収拾してくれ

259 :デフォルトの名無しさん:2010/02/02(火) 07:18:39
この手のバグは配列(ポインタ)のインデックス不正で起こることがとても多い。

260 :デフォルトの名無しさん:2010/02/02(火) 08:58:43
>>259
本当はそうかもしれないけど、他人のコードがおかしいとケンカ売っている以上
もう、「ごめん、僕のミスだった」じゃ済まない。
だから、コンパイラのエラーにするしかなかったんだと思う。
特定のコンパイラだと運よく動くなんてことはままあるのだけど。

261 :デフォルトの名無しさん:2010/02/02(火) 10:30:42
再現コード込みで文句言えない時点で騒いでる方のミス。
と俺は思ってる。

本当に問題あるのなら食わせたソースと吐いたアセンブラ突き合わせて説明できるはず。


262 :デフォルトの名無しさん:2010/02/02(火) 20:58:21
アセンブラは吐かないだろ…

263 :デフォルトの名無しさん:2010/02/02(火) 23:15:06
コンパイラのバグだったらアセンブラ吐かせて説明できるはずってことでしょ

264 :1:2010/02/03(水) 00:08:18
随分日にちがたってしまいました。
アクセス規制にかかっててずっと書き込めませんでした。

ちなみに、>>252は私ではありません。

あと、皆さんのコメント見ててちょっと思ったんですが、
クラスの値渡しってまずいんですか?

そういうプログラムを普段書かないから分からないんですが、

265 :デフォルトの名無しさん:2010/02/03(水) 00:15:43
>>264
値渡しは出来る(と思う)が、当然だがクラスへの変更操作は
呼び出し元には反映されないので、同一オブジェクトへの2つ
のバージョンが出来てしまうことになり多くの場合に問題が発生する
ので、通常はポインタ渡しにする。
VCの場合、プリコンパイルドヘッダ周りが結構悪さをして
予期せぬ不具合を作る場合がある。ビルドする際には
面倒でも中間ファイルを削除する習慣を付けたいもの
(その代わりビルドの時間が多少犠牲になる)

266 :デフォルトの名無しさん:2010/02/03(水) 00:46:23
またVCバグ説w

267 :デフォルトの名無しさん:2010/02/03(水) 00:49:19
>>264
コピー&代入がおかしいって既に数人が指摘してんじゃん

268 :デフォルトの名無しさん:2010/02/03(水) 03:17:05
>>264
コピー、代入がしっかり設計されているクラスならば値渡しは問題にならない。
ただ効率の問題が別にあるがそれ自体はバグではない。
おまえの作った>>14のクラスをコピーや代入するとバグる。値渡しはその一例にすぎない。
二重deleteでヒープを破壊するからな。
もしお前がコピーや代入をたまたましていなくて問題がなかったとしても
>>14のクラスを他人が使う可能性があるとしたらやばいな
まあ他にも複合的な問題はありそうだけどな

269 :デフォルトの名無しさん:2010/02/03(水) 04:14:40
なんでコピーコンストラクタや代入演算子を自前で書かないのかわからない
クラス内でnew/de;eteするクラスは自前で書くのが当たり前だろ

270 :デフォルトの名無しさん:2010/02/03(水) 04:59:39
>クラスの値渡しってまずいんですか?
こういうレベルの人に C++ コードを書かせる時点で間違い

271 :デフォルトの名無しさん:2010/02/03(水) 05:04:52
入門書レベルの質問じゃね?

272 :デフォルトの名無しさん:2010/02/03(水) 05:25:40
あくまでも自分は悪くなく、コンパイラのバグだと言い張る奴は
いつまで経ってもバグが取れない

273 :デフォルトの名無しさん:2010/02/03(水) 07:08:45
永久にとれるはずがない。
そいつが開発をしていること自体がプロジェクトのバグだからな。

274 :デフォルトの名無しさん:2010/02/03(水) 13:51:32
「よくわかんないけど動いたのでこれでいいです」
これで許される環境がウラヤマシスギルw

275 :デフォルトの名無しさん:2010/02/03(水) 15:09:43
まあ、許されてしまう所にいた結果、こんなことに
なってしまうんだろうなあと思う。


276 :デフォルトの名無しさん:2010/02/03(水) 19:01:59
俺が上司なら、上を説得してそいつのコード全部を廃棄するレベル。

277 :デフォルトの名無しさん:2010/02/03(水) 20:59:39
絶対に許さないよ

278 :デフォルトの名無しさん:2010/02/05(金) 23:22:04
値渡しがコピーを発生させてしまうことを知らない
いや、そもそもコピーコンストラクタと代入演算子を知らないんじゃね?

279 :デフォルトの名無しさん:2010/02/05(金) 23:50:36
もっと恐ろしい奴は、起こることを知っていても
それがどういう意味を持つのか理解できない奴。

確実に>>1はその類。

280 :デフォルトの名無しさん:2010/02/06(土) 04:28:56
自分でnew/deleteせずにstl使ってれば
デフォルトのコピーコンストラクタと代入演算子で上手く行くのにね

281 :デフォルトの名無しさん:2010/02/06(土) 08:36:02
えっ

282 :デフォルトの名無しさん:2010/02/06(土) 12:05:50
>>280
こういう中途半端な知ったかが、プロジェクト内に害悪コードをまき散らす。

283 :デフォルトの名無しさん:2010/02/06(土) 12:46:04
「C++はポインタがあるから不安定」とか抜かして
Java/C#を使ってぬるぽで頭を抱えている奴と同類だなw

284 :デフォルトの名無しさん:2010/02/06(土) 13:03:03
問題の原因を追求せずに回避策ばかり論じる奴もバグの温床

285 :デフォルトの名無しさん:2010/02/06(土) 13:55:59
>>283
そーいう連中はしねばいいのに。

286 :デフォルトの名無しさん:2010/02/06(土) 18:25:25
>>280が何を言いたかったのかさっぱりわからない

287 :デフォルトの名無しさん:2010/02/06(土) 22:19:31
多分このスレの頻出単語適当につなぎ合わせてそれっぽい文章をつくるスクリプトだよ

288 :デフォルトの名無しさん:2010/02/08(月) 17:46:21
このスレなんでこんなに人気あるんだ?

289 :デフォルトの名無しさん:2010/02/08(月) 18:03:35
ぬるぽの方がマシかと

290 :デフォルトの名無しさん:2010/02/08(月) 19:10:21
>>1は早くソース晒せw

291 :デフォルトの名無しさん:2010/02/08(月) 20:27:21
>>290
そんな。ソース出したら間違いが分かっちゃって、先輩のせいにできないじゃないですか!!!
もう、コンパイラのせいでいいんです。

292 :デフォルトの名無しさん:2010/02/08(月) 21:40:52
>>14でC1のインスタンスを値渡ししちゃったんでしょ

293 :1:2010/02/11(木) 17:18:44
ここの方々の書き込みのお蔭でだいぶ勉強になってます。
ありがとうございます。

コピー、代入に話が集中してきていますが、
今回の不具合とは関係ないです。

クラスC1がコピーできないのはその通りえすが、
コピーや代入を前提としてないので大丈夫です。

294 :デフォルトの名無しさん:2010/02/11(木) 18:20:09
ソース無しで議論させるの?

295 :デフォルトの名無しさん:2010/02/11(木) 18:22:13
C++がわかる>>1はすごい

296 :デフォルトの名無しさん:2010/02/11(木) 20:48:56
コピーや代入は前提としてないので(キリッ

297 :デフォルトの名無しさん:2010/02/11(木) 21:20:56
>>293
あんたプログラムやめて真剣に他の生き方を模索した方がいいと思うよ

298 :デフォルトの名無しさん:2010/02/12(金) 00:36:19
>前提としてないから大丈夫
じゃああらゆる不具合も前提としなければ大丈夫

299 :デフォルトの名無しさん:2010/02/12(金) 04:20:19
>>28
会社都合の方が条件良いよ。

300 :デフォルトの名無しさん:2010/02/12(金) 12:41:44
値渡ししたらコピーが発生するんだが

301 :デフォルトの名無しさん:2010/02/12(金) 12:44:39
もう放っとけよ
こいつがどうなろうと俺には全く関係がないし

302 :デフォルトの名無しさん:2010/02/12(金) 13:02:10
>>301
でも、実際、ある日突然新米プログラマーが
「2chであなたのプログラムがおかしいという結論になった」
とか言いがかり付けてきたときのケーススタディにはなると思うよ

303 :デフォルトの名無しさん:2010/02/12(金) 13:34:17
そもそも値渡しなんか使わない
普通はポインタか参照を渡す

304 :デフォルトの名無しさん:2010/02/12(金) 14:27:21
他人のコードまで制御できるか?
できるなら実装で禁止するべきだし、そうでなくてもドキュメントに書いて仕様とする必要はあるだろ

305 :デフォルトの名無しさん:2010/02/12(金) 15:13:33
コピーコンストラクタと代入演算子が使えないようにしとくべきだとは思います

306 :デフォルトの名無しさん:2010/02/12(金) 15:18:51
noncopyableただしmovable

307 :デフォルトの名無しさん:2010/02/13(土) 05:49:41
値渡ししてるのかしてないのか知らんけど
何らかの暗黙のコピーが発生してるんじゃないかって話じゃないのか?
前提としてないから大丈夫って答えからするとまともにチェックしてなさそうだが
オレも実装で禁止すべきだと思うよ。
他人が誤使用してしまったら終了じゃん

308 :デフォルトの名無しさん:2010/02/13(土) 07:22:32
>>304
他人が誤用しないようコードで抑えるのは当然として、
他人のコードであろうとコードレビューで品質を抑える。
レビューですら抑えられないレベルのバカのコードは黙って捨てる。

まぁそもそも>>1の言っていることだから、本当にSが原因だとは限らないがなw

309 :デフォルトの名無しさん:2010/02/13(土) 10:42:57
どうやって禁止するの?

310 :デフォルトの名無しさん:2010/02/13(土) 10:53:26
access specifierで禁止する。

311 :デフォルトの名無しさん:2010/02/13(土) 12:58:12
大元のバグの原因になっているクラスのコピーコンストラクタと
代入演算子さえ正しく書けば動くんじゃないの?

312 :デフォルトの名無しさん:2010/02/13(土) 23:48:36
コンストラクタ&コピーコンストラクタ&=オペレーターで
全メンバを 順次 初期化は基本中の基本

313 :デフォルトの名無しさん:2010/02/14(日) 02:18:30
boostにnoncopyableなんてあるのな

314 :デフォルトの名無しさん:2010/02/14(日) 10:07:13
>>313
必ずしもそれは使わなくてもクラスに次の3行

private:
A(const A&);
A& operator=(const A&);

を付け加えるか(もちろんAは実際のクラス名に変更)これを継承すれば
コピー不可能になるよ

315 :デフォルトの名無しさん:2010/02/15(月) 05:56:26
可読性が高いのはどっちかね

316 :デフォルトの名無しさん:2010/02/15(月) 11:47:24
boostを使えない現場では>>314のようなテクを使うしかないだろう
仕事でboostが必ず使えるとでも思っているのか?

317 :デフォルトの名無しさん:2010/02/15(月) 12:08:02
あああともう一つ
>>314だけを入れたクラスをnoncopyableという名前で宣言しておき、
これを継承すればboostと同じ事になるから可読性が下がるという
事はない

318 :デフォルトの名無しさん:2010/02/15(月) 12:45:46
俺は生が好き

319 :デフォルトの名無しさん:2010/02/15(月) 14:21:00
>>316
boost使えても、普通は>>314

320 :デフォルトの名無しさん:2010/02/16(火) 22:31:58
>>319
んなこたない。

例えば WebKit では Noncopyable というクラスを自前で用意してそれを使っている。
http://trac.webkit.org/browser/trunk/JavaScriptCore/wtf/Noncopyable.h

321 :デフォルトの名無しさん:2010/02/16(火) 23:44:56
ライブラリやフレームワークが提供するものを指して
自前で用意するっていうのか?

322 :デフォルトの名無しさん:2010/02/17(水) 08:28:45
boost脳はいいかげんにしてほしい

323 :デフォルトの名無しさん:2010/02/17(水) 08:30:09
じゃあはやく0x使わせろよ

324 :デフォルトの名無しさん:2010/02/17(水) 11:34:53
>>320
んなことないこたない。
一段階余分なものがあると、それを知らない奴はその内容を調べないとならないだろ。
手間がかかるわけじゃなし、>>314が最良だろ。

325 :デフォルトの名無しさん:2010/02/17(水) 17:09:58
>>314だと、「こんなのあるからコピーができないんだ!」とかいって、
いつのまにか誰かに修正されちゃうかもしれないだろ。w

326 :デフォルトの名無しさん:2010/02/17(水) 17:16:49
>>325
糞吹いたw

327 :デフォルトの名無しさん:2010/02/17(水) 17:19:35
C++を使うのが間違い
C#かJavaを使うべし

328 :デフォルトの名無しさん:2010/02/17(水) 20:42:28
>>326
マジで派遣にそれをやられたことがある。
「事前条件チェックするな!実行したら落ちたろ!」と逆ギレされたこともある。
「constなんて使っているバカは誰だ!コンパイルが通らないだろボケ!!」には参った。

仕組みとして防ぐのがベスト、しかも明示的に書くのが理想だが、残念ながらアホには通じないw

329 :デフォルトの名無しさん:2010/02/17(水) 21:01:36
随分態度のでかい派遣だな

330 :デフォルトの名無しさん:2010/02/18(木) 00:25:53
アホっていうか
派遣にしろプログラマにしろ
そんな危なっかしいのはとてもじゃないけど雇ってられないな

フレームワークやシステムの思想を独断で破られるとか後が大変だぞ、、

331 :デフォルトの名無しさん:2010/02/18(木) 00:43:25
>>324
Noncopyable という名前を見て意図を察することのできない奴はよっぽどの痴呆
万が一コードを見に行ったとしても20秒で読み終わるぞ

似たようなコード片をあちこちにばら撒くよりはミスの可能性が減るし、やっておいて損はない


332 :デフォルトの名無しさん:2010/02/18(木) 11:09:48
boost脳はいいかげんにしてほしい

333 :デフォルトの名無しさん:2010/02/18(木) 11:56:31
>>331
お前は、ファイルの場所も内容も知ってるから20秒で終わるんだよ。

334 :デフォルトの名無しさん:2010/02/18(木) 12:03:45
ほんのちょっとコードを加えれば、明示的にコピー禁止なクラスになるし、プロジェクト内で
コピー禁止なクラスなんて数個くらいだろうに、なんでほんのちょっとコードを加えるのを
嫌がるのだろうか。
そもそもC++はMix-in的なものはなじんでないから、Noncopyableに限らずいくつも多重継承
されてると、はてなと思ってしまう。

335 :デフォルトの名無しさん:2010/02/18(木) 17:13:45
自作クラスのメンバ変数にポインタを使うようになったら
半分バグってると思って扱ったほうがいい

336 :デフォルトの名無しさん:2010/02/18(木) 18:18:26
えっ

337 :デフォルトの名無しさん:2010/02/18(木) 20:58:33
なんでnoncopyable程度の簡単な抽象化すらサボって全部手書きしたがるの? マゾ?
プログラマなんて労力を省いてなんぼの商売でしょうに。

338 :デフォルトの名無しさん:2010/02/19(金) 01:21:00
boost使えなかったり、なんかの理由でに使わない場合だってあるでしょ

339 :デフォルトの名無しさん:2010/02/19(金) 04:58:17
「なんでNoncopyable程度の簡単なコードすらサボって抽象化したがるの?」
でも成立しそうな気がした。

340 :デフォルトの名無しさん:2010/02/19(金) 11:41:30
>>337
privateに決まり切った二行を追加するだけだろうが。
Noncopyable使う場合もinclude文と継承部分の変更が必要で、合計二行の変更が必要。
どんだけ労力変わるんだよ?

341 :デフォルトの名無しさん:2010/02/19(金) 13:00:08
noncopyable継承でオーバーライドを防げるの?

342 :デフォルトの名無しさん:2010/02/19(金) 13:10:36
みんなアホすぎて話にならん。
noncopyableを使うメリットは、クラスの宣言全部を見ることなくそのクラスがコピー不可だとわかること。
privateに追記派は、クラスのコメントに「コピー不可なクラス」とか書いちゃうわけ?

343 :デフォルトの名無しさん:2010/02/19(金) 21:54:01
誤ってコピーを誘発させる記述をしてしまった時にコンパイルエラーが
引き起こってくれればいいわけでどっちでも構わないけどな

まあ、値渡しで何が起こるかわからないとか、コピー禁止の方法を知らないとか、
そういうのがこの上のレスだけでも散見できるわけで
noncopyableがあれば一目瞭然というほどの知名度はなさそうだけどな

>>341
final属性か何かと勘違いしていないか?

344 :1:2010/02/21(日) 17:57:36
バグは取れておらず先週サーバーとして動作していた
アプリが突然落ちて、DBマスターを壊したみたいで
大騒ぎでした。で、金曜日についにM$社の担当者が
呼び出されていました。ソースを渋々見せながら状況
を上司が説明したところ、結局担当者にも原因がわか
らなかったようで、「どうか御内密に」という意味で
しょうか、ずっしりと重いキャスター付き旅行用スー
ツケースを置いてきました。あの中には何が入ってい
たのかは大体想像がつきますが、金曜日の晩は普段は
飲み会は常に割り勘なウチの会社が珍しく高級バーに
招待してくれました。

345 :デフォルトの名無しさん:2010/02/21(日) 19:54:52
「サーバーとして動作していたアプリ」はサーバじゃないのか、てのは置いといても
それで DB 壊れるってかなり酷いレベル。

346 :デフォルトの名無しさん:2010/02/21(日) 20:45:49
コマンドラインで単独一回限りの実行もしてくれるんですが
/Sオプション付けると常駐して専用DLLを通して
連続的にサービスを実行してくれるアプリケーションも
あります。

347 :デフォルトの名無しさん:2010/02/21(日) 22:40:09
なんか一気に嘘臭く

348 :デフォルトの名無しさん:2010/02/22(月) 01:16:05
ホラも限度を超えると訴えられるぞ

349 :デフォルトの名無しさん:2010/02/22(月) 07:23:32
だよな。
これはMSに訴えられたら負けるレベル
ネットには何を書いてもいいといまだ思っているやつがいるとは。
ご愁傷さま

350 :デフォルトの名無しさん:2010/02/22(月) 13:24:45
サイドパーティを含めて
ずっしりと重い過去資料(マニュアル、参考書、一部プリント
アウト)ってのが関の山だろ
使用許諾契約書にミッションクリティカルな用途には
使ってはならない
と明記されているんだし...

351 :デフォルトの名無しさん:2010/02/22(月) 14:19:42
サイドメニュー?

352 :デフォルトの名無しさん:2010/02/24(水) 01:13:08
サラダとかデザートとかもりもり出てくるパーティかな。

353 :デフォルトの名無しさん:2010/02/24(水) 04:45:53
サイドパーティじゃなくてサードパーティ
これは敢えて書く迄もないだろw
>>1が高級バーに連れて行ってもらえた
実はこれから始まるバグフィックスまでの
開発室監禁の挨拶代わりじゃねの?

354 :デフォルトの名無しさん:2010/02/24(水) 12:24:57
「今日のバーはサラダも食べ放題だ」
「ええっ!!ドリンクだけじゃないんですか?!!!」

355 :デフォルトの名無しさん:2010/02/24(水) 17:03:51
パーティじゃなくてバー

356 :デフォルトの名無しさん:2010/02/24(水) 19:50:52
ああ、キカイダーが乗ってるやつ。

357 :1:2010/02/24(水) 21:58:37
>>1ですが、今同僚の女性社員3名と開発室に監禁されて
ます。部屋にはビデオ付きベッドが置かれており共用で
す。シャワールームもトイレットも何故かついてます。
ベッドの上にテーブルを持ち込んで4人並んでPCに
向かってます。部屋はかなり暖房がキツめで皆裸です

358 :デフォルトの名無しさん:2010/02/24(水) 23:19:23
おっきした

359 :デフォルトの名無しさん:2010/02/24(水) 23:32:59
トイレをトイレットと言う所に感心した

360 :デフォルトの名無しさん:2010/02/25(木) 06:45:30
>>358
だが待ってほしい。その3人が森三中レベルだったとしたら、どうだろうか?

361 :1:2010/02/25(木) 15:15:22
まだ開発作業は続いています。昨晩はちょっと原因が
わかりかけたので3人からご褒美を頂きました。
それぞれ微妙に違うもんですね。結構開発されてました。
さすがに4人でダブルベッドに寝るのは窮屈でしたが。
起きたのはお昼前です

362 :デフォルトの名無しさん:2010/02/25(木) 15:32:08
2回射精した


363 :デフォルトの名無しさん:2010/02/26(金) 13:01:37
いいスレだな

364 :デフォルトの名無しさん:2010/02/26(金) 15:16:52
ここにきて良スレと化す

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
もう少しうまくやれ

370 :デフォルトの名無しさん:2010/02/27(土) 10:53:36
>>1がネタスレ化しようとして必死なのは理解できた

371 :デフォルトの名無しさん:2010/02/28(日) 00:42:38
おれにはもう1はいないように思えるんだけど

372 :デフォルトの名無しさん:2010/02/28(日) 01:14:29
>>1は実在しない。

>>1とは、無能な開発者を、Sに劣らないレベルの高いライブラリを作りたいと望む人々の間で、自然発生的に生まれた底辺プログラマである。

はじめはジョークに過ぎなかった。
>>1はこの世のどこかにいるはずの底辺プログラマだった。
しかしそれは>>14のまさに『糞』と呼ぶに相応しいコードにウンザリしていた京都大学霊長類研究所の間で瞬く間に広まって行った。
Sのコードがこう動いた。VCのあのデバッグモードは美しかった。
>>1はそうやって、少しずつ理想のバグの原因を突き止めていった。
彼は健康で顔色のよい新入社員である、彼が敵対する同僚はSである、彼はバグの原因を他人のせいにしておかないと落ち着かない、
そして彼は親しみやすいことにメモリ破壊が大好きなのだ!

>>1はこうして、天才チンパンジーの理想のプログラマのイメージのコラージュとして生まれたのである。
アイちゃんは>>1を欲した。故に>>1は存在するのである。

373 :1:2010/02/28(日) 01:33:13
ふ〜
まだバグが取れません。
彼女達は昼間かなりしつこく攻めてきましたが
さすがに今は疲れたのか横ですやすや三人並んで
寝ています。
彼女達のウンコの匂いも嗅ぎました。
一体感が出てきたので頑張って開発を続けます。

374 :デフォルトの名無しさん:2010/02/28(日) 11:09:08
スカトロはちょっと

375 :デフォルトの名無しさん:2010/03/01(月) 08:19:36
>横ですやすや
を横山やすしと空目したことだけは伝えたい。

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
>>379
もうやめろよ。>偽者

381 :デフォルトの名無しさん:2010/03/05(金) 14:29:39
>>378
結局何が原因だったのかまとめてくれないか?
会社によってはそういうのは人工的に再現出来る
段階まで煮詰めないとフィックスしたとは
認めてくれないところもあるね。

382 :デフォルトの名無しさん:2010/03/05(金) 17:51:27
>>381
>結局何が原因だったのかまとめてくれないか?
メンバー全員のレベルが低かった。

383 :デフォルトの名無しさん:2010/03/05(金) 18:39:24
メンバーがC++を使うにはまだ早かった or 年行きすぎてもうCしか使えなかった

384 :デフォルトの名無しさん:2010/03/05(金) 22:10:29
原因:S
解決策:Sのコード修正

これが>>1の限界。これ以上の調査を>>1に求めるのは酷だぞ。

385 :デフォルトの名無しさん:2010/03/06(土) 10:24:51
原因:不明
解決策:仕様

これが>>1の限界。これ以上の調査を>>1に求めるのは酷だぞ。

386 :デフォルトの名無しさん:2010/03/06(土) 15:09:31
ポインタの二度消しやってて実行中にエラー吐いて
仕様だって騒いでた奴いたな〜

387 :デフォルトの名無しさん:2010/03/06(土) 15:42:08
俺のところには二度消しをやって修正に時間をおもいっきり喰った上に
レビューでdeleteを全て消して修正したと言い張り
挙句にnew/deleteはC++の不具合だと断言した奴がいた。

まぁ、>>1もその同類だろうがなw

388 :1:2010/03/06(土) 16:37:59
原因は同僚の女性とのコミュニケーション不足でした
今、改善に向かって日夜努力中です。

389 :デフォルトの名無しさん:2010/03/07(日) 12:09:10
俺は年行きすぎてもうC++しか使えん

390 :デフォルトの名無しさん:2010/03/07(日) 22:01:40
C++初心者だけど、>>1以外の人たちのレスが結構ためになった。
初めの方はみんな何言ってるのかさっぱり分からなかった。(何しろdelete[]の[]が□にしか見えなかったのは内緒)
悔しいから、分からない単語をひとつずつ調べていったら、徐々に理解できるようになった。
皆さんありがとうございます。


391 :デフォルトの名無しさん:2010/03/07(日) 22:32:09
俺も勉強になった。
みんな結構優しいんだよな。

392 :デフォルトの名無しさん:2010/03/07(日) 22:38:34
なんだ俺が二人もいるのか

393 :デフォルトの名無しさん:2010/03/08(月) 22:13:14
ゆとり乙
とりあえず中学くらいは卒業しとけや


394 :デフォルトの名無しさん:2010/03/11(木) 00:25:26
このスレを振り返ってみた。
>>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を名乗るカキコが出ても偽物だと思って
下さい。

396 :デフォルトの名無しさん:2010/03/11(木) 00:41:25
そんな大量の回数makeできるプロジェクトの規模なんて
たいしたことないと思うがw

397 :デフォルトの名無しさん:2010/03/11(木) 00:53:20
例えばLinuxカーネルとかだったら、一日に何十回も更新が入るんで
makeして問題が発生してないかチェックする専門グループ
とか居て、別スレッドで作業してんじゃね?
何十台ものPCで並列でmakeを数十分置きに行ってたりしてるとか。
正式なバージョンアップとして公開されるカーネルは失敗した
更新を除いたもの

398 :デフォルトの名無しさん:2010/03/11(木) 01:31:00
なるほどね
専門のチェックグループがいるのに>>14みたいなコードが許されてしまうのか

399 :デフォルトの名無しさん:2010/03/12(金) 12:40:25
永遠にクビになるまで監禁されてれば?
コピーコンストラクタと代入演算子の必要性がわからない奴は
C++触るなよ

400 :デフォルトの名無しさん:2010/03/14(日) 00:52:53
コピーコンストラクタと代入演算子の扱いのデリケートさは
C++の最大の難所。仕事でさせられる人は可哀想だと言えば
可哀想。
Java経験者ならすぐにその辺り察知して回避したり、使い
分けられるようになるだろうからなおさら...

401 :デフォルトの名無しさん:2010/03/14(日) 06:57:10
ジャバ(笑)

402 :デフォルトの名無しさん:2010/03/14(日) 07:52:12
蛇婆

403 :デフォルトの名無しさん:2010/03/14(日) 12:09:43
C経験者ってんならわかるけど
JAVAだけやってたひとがそのへんの
危険さをすぐに理解できるとは思えない

404 :デフォルトの名無しさん:2010/03/14(日) 12:37:12
JAVAって全部大文字なの?Javaじゃなくて?

405 :デフォルトの名無しさん:2010/03/14(日) 16:39:38
おっさんがよくJAVAって書くよな
違和感はあるが公式にも全部大文字の例があるから間違いではないだろう
それより全部全角のほうが気になる

406 :デフォルトの名無しさん:2010/03/14(日) 17:01:47
日本語入力にしてたら
英語入力しようとおもったらSHIFTキーを押しながらやるから全部全角でいいんだよ
いちいちF10を押したり半角全角で切り替えるのか?めんどくせーやつだな

407 :デフォルトの名無しさん:2010/03/14(日) 17:48:51
いや2chだし好きにすりゃいいよ
別にめんどくさいとは思わんけどね
おまえさんだってコード書いてるときは日本語入力切り替えるだろ

408 :デフォルトの名無しさん:2010/03/14(日) 21:21:49
どうかんがえても半角全角キー一回押すよりshift押しながら打つほうがめんどくさいだろ
いや、いいんだけどさ

409 :デフォルトの名無しさん:2010/03/15(月) 01:24:39
半角モード涙目

410 :デフォルトの名無しさん:2010/03/15(月) 01:44:30
Javaは良い選択肢だと思うぜ
>>1はJavaへ移行することでC++の煩わしさから解放されるだろう
オレも>>1がC++の世界からいなくなることで不安から解放される

411 :デフォルトの名無しさん:2010/03/15(月) 06:37:54
>>410もJavaを一度やってみたほうがいい
そしたらC++の煩わしさなど大半はアホらしい
もの(Java勉強不足/C勉強不足が原因)だった
ということがわかる筈(本当に煩わしいものは
あることはあるが)(C++の世界(笑))

412 :デフォルトの名無しさん:2010/03/15(月) 07:17:03
java(笑)なんて何の役に立つんだ
CPU資源を無駄食いした糞重いソフトが出来上がるだけじゃねえか
ソフトウェアは速さこそ正義だ


413 :デフォルトの名無しさん:2010/03/15(月) 09:04:02
みんながみんなF1を欲しいわけじゃないしなぁ
中にはステップワゴンを欲しい人間も居る

414 :デフォルトの名無しさん:2010/03/15(月) 09:26:11
JavaをF1に例えるのは買いかぶり過ぎ
C++もステップワゴンとは違うだろ

415 :デフォルトの名無しさん:2010/03/15(月) 09:33:08
おいw

416 :デフォルトの名無しさん:2010/03/15(月) 09:37:03
春眠暁を覚えず

417 :デフォルトの名無しさん:2010/03/15(月) 10:30:27
VC++ →(VC)++
BCC++ →(BCC)++
共にWindows環境依存の拡張があるんで、こう考えた
ほうがいいかも
Java→(--(C++))++
()を外す事ができないことに注意

418 :デフォルトの名無しさん:2010/03/16(火) 05:39:30
外す事ができないことに注意(キリッ)

419 :デフォルトの名無しさん:2010/03/20(土) 01:51:27
>>1はまだ監禁されて女子社員達とmakin' loveな毎日を
送ってるのか?

420 :デフォルトの名無しさん:2010/03/20(土) 02:59:29
南京に行ったんじゃね?

421 :デフォルトの名無しさん:2010/03/22(月) 18:33:19
偽1はもう来ないのか

422 :デフォルトの名無しさん:2010/03/23(火) 19:47:27
本物の1もなかなか来ないけどね。

423 :デフォルトの名無しさん:2010/03/24(水) 18:56:02
改めてC++は分かりにくいと感じたよ。
C#のネイティブコンパイラがVSに含まれないかなぁ。

424 :デフォルトの名無しさん:2010/03/24(水) 20:54:44
(Windowsユーザなら無償DL可という意味での)フリーな
csc.exeじゃ不満か?

425 :デフォルトの名無しさん:2010/03/24(水) 21:35:39
.NETではないネイティブコードを出力できるC#コンパイラが
Visual StudioのIDEから使用できたらなぁ。
という意味でした。
需要はあると思うんだけど。


426 :デフォルトの名無しさん:2010/03/24(水) 22:04:21
Ngenでも使ってください

427 :デフォルトの名無しさん:2010/03/24(水) 22:50:24
Ngenはネイティブコードにコンパイルしてくれるけど、
実行時には.NET Frameworkが必要だから。


428 :デフォルトの名無しさん:2010/03/24(水) 23:02:29
それは別にいいだろ

429 :デフォルトの名無しさん:2010/03/24(水) 23:03:18
どんな言語使っても>>1はダメだろ

430 :デフォルトの名無しさん:2010/03/25(木) 00:29:17
こんなクススレがなんで人気あるんだ?

431 :デフォルトの名無しさん:2010/03/25(木) 02:17:27
反面教師になるからかな。

432 :デフォルトの名無しさん:2010/03/25(木) 12:32:38
Mono-FrameworkではC#コンパイラがあってlinuxやMac-OS
でも動作するとか.
なんで現時点でもあの複雑きわまりない文法を解釈しネィティブ
コードを吐き出すものが無いとも言えない。
ただし勿論.NETの語彙に精通することがコーディングには
必須。されど.NETはWindowsアーキテクチャーを強く仮定
してるものだから使い勝手が良いものになるとは今のところ
思えない。

433 :デフォルトの名無しさん:2010/03/25(木) 14:40:09
>>432
日本語でおk

434 :デフォルトの名無しさん:2010/04/08(木) 18:06:40
ちょっと良く分からないんですが、
14のコードはばっちりC++だと思うんですが、
糞とか言ってる人は何が言いたいんでしょうか。

435 :デフォルトの名無しさん:2010/04/08(木) 18:41:53
悪いのは>>1じゃないもん

436 :デフォルトの名無しさん:2010/04/08(木) 18:46:05
>>434
だからインスタンスを関数呼び出ししたり代入してみろって

内部でヒープから確保する部分のあるクラスにコピーコンストラクタも
代入演算子もないとか、基本中の基本を破っているんだぞ

437 :デフォルトの名無しさん:2010/04/08(木) 19:08:33
件のC1をvectorに放り込んだらどうなるんだ?

438 :デフォルトの名無しさん:2010/04/08(木) 19:13:51
>>20でオチが出てる

439 :デフォルトの名無しさん:2010/04/08(木) 19:17:30
不思議なスレだな。

440 :デフォルトの名無しさん:2010/04/08(木) 19:18:05
で、>>1はクビになっちゃったとか?

441 :デフォルトの名無しさん:2010/04/10(土) 00:49:54
>>1みたいのが出ないように発症例あげてみる

http://codepad.org/tBficgxh
http://codepad.org/DghzfV7V

442 :434:2010/04/17(土) 13:16:08
コピーや代入がちゃんと設計できてないから、
C++っぽくないってことですかね。

443 :デフォルトの名無しさん:2010/04/17(土) 16:49:16
ぽくないとかそういうレベルじゃない
下手に扱うとエラーが発生するから糞

104 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)