トップページ⇒tech
455コメント137KB

new/deleteで異常終了する(Visual C++)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/01/06(水) 20:35:52
大変、困っています。
Visual C++ 2008でコーディングしています。
コーディングは何度も何度も見直しました。
間違っていません。

なのに、実行するとnewで異常終了します。
debug版で動かすと動きます。release版で動かすと異常終了します。
デバッグのしようがありません。

ホントに、コーディングは正しいんです。
こういう症状の原因って何が考えられるでしょうか。

よろしくお願いします。

deleteでも異常終了します。
未初期化ポインタのdeleteとかそんなのではなくて、
本当にコーディングはあってるのに、異常終了します。

動きは、毎回違います。
例えば、printfデバッグをしようとしてprintfを
挿入すると、異常終了ポイントが変わります。
でも、newかdeleteで落ちます。

ホントに、ホントに、コーディングは合ってるのに
どうしようもありません。

もう何ヶ月も仕事が進みません。
このままだと、クビになっちゃいます。

お願いします、本当に、よろしくお願いします。
0314デフォルトの名無しさん2010/02/14(日) 10:07:13
>>313
必ずしもそれは使わなくてもクラスに次の3行

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

を付け加えるか(もちろんAは実際のクラス名に変更)これを継承すれば
コピー不可能になるよ
0315デフォルトの名無しさん2010/02/15(月) 05:56:26
可読性が高いのはどっちかね
0316デフォルトの名無しさん2010/02/15(月) 11:47:24
boostを使えない現場では>>314のようなテクを使うしかないだろう
仕事でboostが必ず使えるとでも思っているのか?
0317デフォルトの名無しさん2010/02/15(月) 12:08:02
あああともう一つ
>>314だけを入れたクラスをnoncopyableという名前で宣言しておき、
これを継承すればboostと同じ事になるから可読性が下がるという
事はない
0318デフォルトの名無しさん2010/02/15(月) 12:45:46
俺は生が好き
0319デフォルトの名無しさん2010/02/15(月) 14:21:00
>>316
boost使えても、普通は>>314。
0320デフォルトの名無しさん2010/02/16(火) 22:31:58
>>319
んなこたない。

例えば 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:45
boost脳はいいかげんにしてほしい
0323デフォルトの名無しさん2010/02/17(水) 08:30:09
じゃあはやく0x使わせろよ
0324デフォルトの名無しさん2010/02/17(水) 11:34:53
>>320
んなことないこたない。
一段階余分なものがあると、それを知らない奴はその内容を調べないとならないだろ。
手間がかかるわけじゃなし、>>314が最良だろ。
0325デフォルトの名無しさん2010/02/17(水) 17:09:58
>>314だと、「こんなのあるからコピーができないんだ!」とかいって、
いつのまにか誰かに修正されちゃうかもしれないだろ。w
0326デフォルトの名無しさん2010/02/17(水) 17:16:49
>>325
糞吹いたw
0327デフォルトの名無しさん2010/02/17(水) 17:19:35
C++を使うのが間違い
C#かJavaを使うべし
0328デフォルトの名無しさん2010/02/17(水) 20:42:28
>>326
マジで派遣にそれをやられたことがある。
「事前条件チェックするな!実行したら落ちたろ!」と逆ギレされたこともある。
「constなんて使っているバカは誰だ!コンパイルが通らないだろボケ!!」には参った。

仕組みとして防ぐのがベスト、しかも明示的に書くのが理想だが、残念ながらアホには通じないw
0329デフォルトの名無しさん2010/02/17(水) 21:01:36
随分態度のでかい派遣だな
0330デフォルトの名無しさん2010/02/18(木) 00:25:53
アホっていうか
派遣にしろプログラマにしろ
そんな危なっかしいのはとてもじゃないけど雇ってられないな

フレームワークやシステムの思想を独断で破られるとか後が大変だぞ、、
0331デフォルトの名無しさん2010/02/18(木) 00:43:25
>>324
Noncopyable という名前を見て意図を察することのできない奴はよっぽどの痴呆
万が一コードを見に行ったとしても20秒で読み終わるぞ

似たようなコード片をあちこちにばら撒くよりはミスの可能性が減るし、やっておいて損はない
0332デフォルトの名無しさん2010/02/18(木) 11:09:48
boost脳はいいかげんにしてほしい
0333デフォルトの名無しさん2010/02/18(木) 11:56:31
>>331
お前は、ファイルの場所も内容も知ってるから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:26
えっ
0337デフォルトの名無しさん2010/02/18(木) 20:58:33
なんでnoncopyable程度の簡単な抽象化すらサボって全部手書きしたがるの? マゾ?
プログラマなんて労力を省いてなんぼの商売でしょうに。
0338デフォルトの名無しさん2010/02/19(金) 01:21:00
boost使えなかったり、なんかの理由でに使わない場合だってあるでしょ
0339デフォルトの名無しさん2010/02/19(金) 04:58:17
「なんでNoncopyable程度の簡単なコードすらサボって抽象化したがるの?」
でも成立しそうな気がした。
0340デフォルトの名無しさん2010/02/19(金) 11:41:30
>>337
privateに決まり切った二行を追加するだけだろうが。
Noncopyable使う場合もinclude文と継承部分の変更が必要で、合計二行の変更が必要。
どんだけ労力変わるんだよ?
0341デフォルトの名無しさん2010/02/19(金) 13:00:08
noncopyable継承でオーバーライドを防げるの?
0342デフォルトの名無しさん2010/02/19(金) 13:10:36
みんなアホすぎて話にならん。
noncopyableを使うメリットは、クラスの宣言全部を見ることなくそのクラスがコピー不可だとわかること。
privateに追記派は、クラスのコメントに「コピー不可なクラス」とか書いちゃうわけ?
0343デフォルトの名無しさん2010/02/19(金) 21:54:01
誤ってコピーを誘発させる記述をしてしまった時にコンパイルエラーが
引き起こってくれればいいわけでどっちでも構わないけどな

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

>>341
final属性か何かと勘違いしていないか?
034412010/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:09
なんか一気に嘘臭く
0348デフォルトの名無しさん2010/02/22(月) 01:16:05
ホラも限度を超えると訴えられるぞ
0349デフォルトの名無しさん2010/02/22(月) 07:23:32
だよな。
これはMSに訴えられたら負けるレベル
ネットには何を書いてもいいといまだ思っているやつがいるとは。
ご愁傷さま
0350デフォルトの名無しさん2010/02/22(月) 13:24:45
サイドパーティを含めて
ずっしりと重い過去資料(マニュアル、参考書、一部プリント
アウト)ってのが関の山だろ
使用許諾契約書にミッションクリティカルな用途には
使ってはならない
と明記されているんだし...
0351デフォルトの名無しさん2010/02/22(月) 14:19:42
サイドメニュー?
0352デフォルトの名無しさん2010/02/24(水) 01:13:08
サラダとかデザートとかもりもり出てくるパーティかな。
0353デフォルトの名無しさん2010/02/24(水) 04:45:53
サイドパーティじゃなくてサードパーティ
これは敢えて書く迄もないだろw
>>1が高級バーに連れて行ってもらえた
実はこれから始まるバグフィックスまでの
開発室監禁の挨拶代わりじゃねの?
0354デフォルトの名無しさん2010/02/24(水) 12:24:57
「今日のバーはサラダも食べ放題だ」
「ええっ!!ドリンクだけじゃないんですか?!!!」
0355デフォルトの名無しさん2010/02/24(水) 17:03:51
パーティじゃなくてバー
0356デフォルトの名無しさん2010/02/24(水) 19:50:52
ああ、キカイダーが乗ってるやつ。
035712010/02/24(水) 21:58:37
>>1ですが、今同僚の女性社員3名と開発室に監禁されて
ます。部屋にはビデオ付きベッドが置かれており共用で
す。シャワールームもトイレットも何故かついてます。
ベッドの上にテーブルを持ち込んで4人並んでPCに
向かってます。部屋はかなり暖房がキツめで皆裸です
0358デフォルトの名無しさん2010/02/24(水) 23:19:23
おっきした
0359デフォルトの名無しさん2010/02/24(水) 23:32:59
トイレをトイレットと言う所に感心した
0360デフォルトの名無しさん2010/02/25(木) 06:45:30
>>358
だが待ってほしい。その3人が森三中レベルだったとしたら、どうだろうか?
036112010/02/25(木) 15:15:22
まだ開発作業は続いています。昨晩はちょっと原因が
わかりかけたので3人からご褒美を頂きました。
それぞれ微妙に違うもんですね。結構開発されてました。
さすがに4人でダブルベッドに寝るのは窮屈でしたが。
起きたのはお昼前です
0362デフォルトの名無しさん2010/02/25(木) 15:32:08
2回射精した
0363デフォルトの名無しさん2010/02/26(金) 13:01:37
いいスレだな
0364デフォルトの名無しさん2010/02/26(金) 15:16:52
ここにきて良スレと化す
036512010/02/26(金) 17:00:36
今日も監禁開発作業が継続されています。
見込みでは週明け位までは終わりそうに
ありません。
今日始めて一人の同僚がお尻を拭かせて
くれました。
いつもはボクが前のほうを拭く役割なので
すが...
036612010/02/26(金) 18:12:48
開発作業って情事そのものだなって痛感してます
036712010/02/26(金) 21:00:32
あと、>>1の不具合が再発し、修正のための工数を精査し6ヶ月と見積もった所、
上司が発狂し3週間で直せと無茶苦茶な事を言い出しました。
社長と専務に「他人の不具合修正を超短期間でやれと押し付けられた」と
事実を伝えたらSと上司は3/21付けで他部署に左遷が決まりました。
五月蝿いのがいなくなったので、これで心置きなく
不具合原因報告書に「原因:Releaseビルド 修正法:Debugビルド」とかけます。
036812010/02/27(土) 02:00:51
今もまだ開発作業中です。
隣で一人の同僚の娘は裸で寝てます。
時々ボクの股間に手を伸ばしてきますが
払いのけながらの仕事です。もう慣れました。
0369デフォルトの名無しさん2010/02/27(土) 10:44:36
もう少しうまくやれ
0370デフォルトの名無しさん2010/02/27(土) 10:53:36
>>1がネタスレ化しようとして必死なのは理解できた
0371デフォルトの名無しさん2010/02/28(日) 00:42:38
おれにはもう1はいないように思えるんだけど
0372デフォルトの名無しさん2010/02/28(日) 01:14:29
>>1は実在しない。

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

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

>>1はこうして、天才チンパンジーの理想のプログラマのイメージのコラージュとして生まれたのである。
アイちゃんは>>1を欲した。故に>>1は存在するのである。
037312010/02/28(日) 01:33:13
ふ〜
まだバグが取れません。
彼女達は昼間かなりしつこく攻めてきましたが
さすがに今は疲れたのか横ですやすや三人並んで
寝ています。
彼女達のウンコの匂いも嗅ぎました。
一体感が出てきたので頑張って開発を続けます。
0374デフォルトの名無しさん2010/02/28(日) 11:09:08
スカトロはちょっと
0375デフォルトの名無しさん2010/03/01(月) 08:19:36
>横ですやすや
を横山やすしと空目したことだけは伝えたい。
037612010/03/01(月) 09:26:30
皆出勤してきたみたいです。隣のオフィスが想像しく
なってきましt。私たちはまだ監禁されてます。
037712010/03/04(木) 18:12:54
まだ監禁は続いてます。
作業開始から1000回はmakeしてます。
037812010/03/05(金) 04:54:12
お久しぶりです。本当の1です。>>293以来です。
またアクセス制限に引っかかって、ずっと書き込めませんでした。
>>344から>>377の1を名乗る書き込みは私ではありません。

お蔭様で、私が担当していたソフトは、無事納品できました。
試験もすべてクリアし、newやdeleteでの異常終了はもう起きていません。
037912010/03/05(金) 05:58:27
と言える日はいつ来るんだろか。
今日もまたオフィス横の監禁室での
彼女達とのmake作業が大量に...
0380デフォルトの名無しさん2010/03/05(金) 12:58:53
>>379
もうやめろよ。>偽者
0381デフォルトの名無しさん2010/03/05(金) 14:29:39
>>378
結局何が原因だったのかまとめてくれないか?
会社によってはそういうのは人工的に再現出来る
段階まで煮詰めないとフィックスしたとは
認めてくれないところもあるね。
0382デフォルトの名無しさん2010/03/05(金) 17:51:27
>>381
>結局何が原因だったのかまとめてくれないか?
メンバー全員のレベルが低かった。
0383デフォルトの名無しさん2010/03/05(金) 18:39:24
メンバーがC++を使うにはまだ早かった or 年行きすぎてもうCしか使えなかった
0384デフォルトの名無しさん2010/03/05(金) 22:10:29
原因:S
解決策: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
038812010/03/06(土) 16:37:59
原因は同僚の女性とのコミュニケーション不足でした
今、改善に向かって日夜努力中です。
0389デフォルトの名無しさん2010/03/07(日) 12:09:10
俺は年行きすぎてもうC++しか使えん
0390デフォルトの名無しさん2010/03/07(日) 22:01:40
C++初心者だけど、>>1以外の人たちのレスが結構ためになった。
初めの方はみんな何言ってるのかさっぱり分からなかった。(何しろdelete[]の[]が□にしか見えなかったのは内緒)
悔しいから、分からない単語をひとつずつ調べていったら、徐々に理解できるようになった。
皆さんありがとうございます。
0391デフォルトの名無しさん2010/03/07(日) 22:32:09
俺も勉強になった。
みんな結構優しいんだよな。
0392デフォルトの名無しさん2010/03/07(日) 22:38:34
なんだ俺が二人もいるのか
0393デフォルトの名無しさん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 同様にスルー

アッー
039512010/03/11(木) 00:32:40
監禁は続いています。みなもうクタクタです。
make総数はついに3000回を超えました。
絶倫と呼んで下さい。
ネットアクセスは暫く自粛しますんで。
次に1を名乗るカキコが出ても偽物だと思って
下さい。
0396デフォルトの名無しさん2010/03/11(木) 00:41:25
そんな大量の回数makeできるプロジェクトの規模なんて
たいしたことないと思うがw
0397デフォルトの名無しさん2010/03/11(木) 00:53:20
例えばLinuxカーネルとかだったら、一日に何十回も更新が入るんで
makeして問題が発生してないかチェックする専門グループ
とか居て、別スレッドで作業してんじゃね?
何十台ものPCで並列でmakeを数十分置きに行ってたりしてるとか。
正式なバージョンアップとして公開されるカーネルは失敗した
更新を除いたもの
0398デフォルトの名無しさん2010/03/11(木) 01:31:00
なるほどね
専門のチェックグループがいるのに>>14みたいなコードが許されてしまうのか
0399デフォルトの名無しさん2010/03/12(金) 12:40:25
永遠にクビになるまで監禁されてれば?
コピーコンストラクタと代入演算子の必要性がわからない奴は
C++触るなよ
0400デフォルトの名無しさん2010/03/14(日) 00:52:53
コピーコンストラクタと代入演算子の扱いのデリケートさは
C++の最大の難所。仕事でさせられる人は可哀想だと言えば
可哀想。
Java経験者ならすぐにその辺り察知して回避したり、使い
分けられるようになるだろうからなおさら...
0401デフォルトの名無しさん2010/03/14(日) 06:57:10
ジャバ(笑)
0402デフォルトの名無しさん2010/03/14(日) 07:52:12
蛇婆
0403デフォルトの名無しさん2010/03/14(日) 12:09:43
C経験者ってんならわかるけど
JAVAだけやってたひとがそのへんの
危険さをすぐに理解できるとは思えない
0404デフォルトの名無しさん2010/03/14(日) 12:37:12
JAVAって全部大文字なの?Javaじゃなくて?
0405デフォルトの名無しさん2010/03/14(日) 16:39:38
おっさんがよくJAVAって書くよな
違和感はあるが公式にも全部大文字の例があるから間違いではないだろう
それより全部全角のほうが気になる
0406デフォルトの名無しさん2010/03/14(日) 17:01:47
日本語入力にしてたら
英語入力しようとおもったらSHIFTキーを押しながらやるから全部全角でいいんだよ
いちいちF10を押したり半角全角で切り替えるのか?めんどくせーやつだな
0407デフォルトの名無しさん2010/03/14(日) 17:48:51
いや2chだし好きにすりゃいいよ
別にめんどくさいとは思わんけどね
おまえさんだってコード書いてるときは日本語入力切り替えるだろ
0408デフォルトの名無しさん2010/03/14(日) 21:21:49
どうかんがえても半角全角キー一回押すよりshift押しながら打つほうがめんどくさいだろ
いや、いいんだけどさ
0409デフォルトの名無しさん2010/03/15(月) 01:24:39
半角モード涙目
0410デフォルトの名無しさん2010/03/15(月) 01:44:30
Javaは良い選択肢だと思うぜ
>>1はJavaへ移行することでC++の煩わしさから解放されるだろう
オレも>>1がC++の世界からいなくなることで不安から解放される
0411デフォルトの名無しさん2010/03/15(月) 06:37:54
>>410もJavaを一度やってみたほうがいい
そしたらC++の煩わしさなど大半はアホらしい
もの(Java勉強不足/C勉強不足が原因)だった
ということがわかる筈(本当に煩わしいものは
あることはあるが)(C++の世界(笑))
0412デフォルトの名無しさん2010/03/15(月) 07:17:03
java(笑)なんて何の役に立つんだ
CPU資源を無駄食いした糞重いソフトが出来上がるだけじゃねえか
ソフトウェアは速さこそ正義だ
0413デフォルトの名無しさん2010/03/15(月) 09:04:02
みんながみんなF1を欲しいわけじゃないしなぁ
中にはステップワゴンを欲しい人間も居る
■ このスレッドは過去ログ倉庫に格納されています