- 1 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:39:18 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.56【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1215278693/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
- 548 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:39:30 ]
- >>546
class hoge{ string * aaa; } mainでaaaに文字列を取得 (ない場合は取得しない hoge::hogeでaaaにはNULLを設定 oge::~hogeで if(aaa){ delete aaa; } としています。 >>547 >>memsetでクリアしてたりする? memsetはやっていないですね。 文字列取得にはc_str()を使用しています。
- 549 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:42:52 ]
- >>548
hoge にデストラクタもコンストラクタもねーじゃねーか。 ソースを省くな。問題が再現する完全なコードを貼れ。
- 550 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:51:20 ]
- >>549
すいません、完全なコードを張る事ができないので省略してました。 何かしらヒントでもあればと思い質問しました。 SoralisとLinuxの互換性がまだ完全に把握できていないので 分かる人がいればと思い。 もうちょっと自分で調べてみます。解決したら役に立つかわかりませんが書き込みます。
- 551 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:59:06 ]
- >>550
問題が再現する最小のコードを作ってもらわないと、エスパーでもなけりゃわからない。 OS間の互換性に原因があると思ってるようだが、どうせ違う。 そういうコード作るのは相談のためでもあるが、基本的な調査の方法でもあるんで、 たいていは作ってる間に自分で気づくんだけどな。
- 552 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 03:10:02 ]
- 全くのあてずっぽうだが、
hogeが意図せずコピーコンストラクタでコピーされてて、 2箇所でaaaがdeleteされているとかないだろうか。 deleteしたばかりで領域が再利用されていない場合に 2回目のdeleteでもエラーにならない処理系は存在する。 Soralisが落ちない処理系で、linuxが落ちる処理系だとすると・・
- 553 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 03:19:04 ]
- >>552
一応gdbでも処理追ってみたのでコンストラクタが2度通ってる事はないみたいです。
- 554 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 03:23:12 ]
- privateでコピーコンストラクタをきってみたら?
デフォルトのコピーコンストラクタが使われているなら、 普通のコンストラクタは通らないよ。 stringがstl::stringだったらポインタで持つ意味があるのかは検討したほうがいいな。
- 555 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 03:26:42 ]
- >>554
なるほどprivateもありですね。試してみます。 stringはstd::stringです。
- 556 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 03:49:12 ]
- OSが違ったら通らないではなくて、Solarisではたまたまエラーが
出なくてLinuxではしっかりチェックされて落ちるってオチだろうな。 多分ソースにバグがある。
- 557 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 03:58:01 ]
- >>556
その可能性大ですね。 Solarisはチェックが甘いからたまたま通ってただけな気がします。 時間あるから作り直そうかな。他にもありそうですし。 元々作った人が逃げて改修まかされて困ったもんです。
- 558 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 03:58:37 ]
- Solarisはdeleteした領域を触っても落ちないからね。
|

|