- 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でのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
- 532 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:26:06 ]
- コマンドプロンプトにstartってコマンドあるから
start.exeはまずくない?
- 533 名前:デフォルトの名無しさん [2008/07/30(水) 00:26:14 ]
- >>531
printfのあとに fflush();つけたらどうなるかな?
- 534 名前:533 mailto:sage [2008/07/30(水) 00:27:06 ]
- いろいろ間違えたごめん忘れてください
- 535 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:27:24 ]
- (なぁなぁ、badって何?)
- 536 名前:デフォルトの名無しさん [2008/07/30(水) 00:32:52 ]
- あ、startじゃぁまずいですか^^;
aに変えました。そしたらbatのみになりました。 参考元URL:homepage3.nifty.com/mmgames/c_guide/index.html しかも、printf("hello");で改行なし「hello」が表示されました。 お騒がせ申し訳ありません。m(--)m参考元さんも申し訳ありません。m(--)m
- 537 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:42:51 ]
- unixでtestという実行ファイルを作ってハマった当時の俺
- 538 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:44:24 ]
- あるある
うん。あるある
- 539 名前:デフォルトの名無しさん [2008/07/30(水) 00:44:46 ]
- batやらbadやら恥ずかしいことばかり書き込んでしまいました。
セキュリティーホールがあれば入りたいです。 startをaに変更すると、 www-2ch.net:8080/up/download/1217345861729515.WpasSs な感じになりました。これで夜も安心して眠れます。 >>527 startにしたのは無知だからでした。「手始めにスタート」のつもりでした。 この本というかサイトではそうでした。他のサイトを見てみると他の記述もありましたが、 最初に見たこのサイトの記述で貫こうと思います。 >>532 決定的な回答ありがとうございます。小鳥の1歩ほど前進することができました。 終わりなきC言語を心ゆくまで堪能したいと思います。親切にしてくださってありがとうございます。 >>534 いっしょにセキュリティーホールに入りませんか。 >>535 完全に撃ち間違いです。申し訳ありま栓。
- 540 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:16:56 ]
- すいません質問です。
ソラリスでは使えてたのですが、Linuxだとエラーが出てしまってgoogle検索したのですがいい対応策が見つかりません。 newとdeleteは演算子なのですが、 例 string * aaa; というのを.hで宣言し .ccにて コンストラクタでNULLクリア main処理にて値を入れる場合と入れない場合があるのですが、 値を入れない場合に、 デストiラクタでaaaをdeleteしようとすると、落ちてしまいます。 SolarisからLinuxに入れ替えようとしているので、Solarisでは通るのにLinuxでは通らないという事はあるのでしょうか。 簡単にプログラムの例を classで、 string * aaa; を宣言しておき、 コンストラクタで、aaaをNULL初期化します。 mainルーチンで、aaaにファイルから文字列を取得するのですが、 該当しない場合はaaaはNULLのままとなっています。 デストラクタで、 if(aaa){ delete aaa; } とやっているのですが、そこで落ちてしまいます。 よろしければアドバイスお願いします。
- 541 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:19:23 ]
- コンパイラはgccです
- 542 名前:デフォルトの名無しさん [2008/07/30(水) 02:19:37 ]
- VC++を使用しているのですが、
char ItemObject[1024]; ItemObject = "TEST"; listBox->Items->Add(ItemObject); とするとコンパイルできません。 プログラミング初心者で、どうすればいいのか分からず困っています。 どなたか、助けて下さい。よろしくお願いします。
- 543 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:20:01 ]
- delete演算子は対象のポインタが 0 の時は何もしないで
戻るようになっている。 従って if文は不要。原因は他の所にあるのではないか。
- 544 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:23:19 ]
- >>542
listBox->Items->Add( gcnew System::String(ItemObject) ) はじめから System::Stringを使え。 それより、このスレはC++/CLIはOKなのかな?C++/CLIはC++とは別物だから明記しておくように。
- 545 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:28:22 ]
- >>543
>>delete演算子は対象のポインタが 0 の時は何もしないで >>戻るようになっている。 これは知ってはいたのですが、チェックしてしまうクセがついてしまっています。 >>従って if文は不要。原因は他の所にあるのではないか。 やはり原因は他にあるのですかね。 Soralisで通っててLinuxでは通らないので、規格の違いかと思い質問させてもらいました。 (LinuxはSoralisと比べて厳しいので もうちょっと調べてみます。 アドバイスありがとうございます。
- 546 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:29:17 ]
- >>540
クラスも無いのにコンストラクタとか言ってるのがおかしい。ソース晒せ。
- 547 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:33:41 ]
- memsetでクリアしてたりする?
- 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した領域を触っても落ちないからね。
|

|