ここは当サイト唯一の掲示板です。
ここで記載され、議論される内容は下記を想定しています。

①当サイトで公開しているソフトやソースコードの不具合や要望
②訪問者の作成したソースコードについての相談

全然異なる内容のため、一応のルールを決めておきます。
①のタイトルの先頭には「【不具合】」または「【要望】」を記載してください。
②のタイトルの先頭には「【相談】」を記載してください。

なお、上記のルールに沿わない場合は……何もありません。
ペナルティ等は何もありませんが、可能な限りルールを守っていただけると助かります。

不具合・要望連絡・交流掲示板

3888

【相談】実行エラー - suzy

2019/06/09 (Sun) 22:31:40

プログラムの実行が58行目で止まります。
http://p98074.php.xdomain.jp/Uploader/HitAndBlow.zip

Re: 【相談】実行エラー - 管理人 URL

2019/06/10 (Mon) 00:27:18

添付されていたファイル拝見しました。
HitAndBlow.cppの58行目で止まるということですね。

scanf("%s",input1);
上記内容でinput1のメモリ領域以上に文字列を入力しているため、
メモリ破壊されています。
説明が必要なら別途説明ページを作りますが、ここでは簡単に。

「input1」という箱のサイズは1byteです。
しかし、「scanf("%s",input1);」で入力されるデータの最小サイズは2byteです。
というのも、文字列には終端を示すためのNULL文字があるためです。

例えば、「1」と入力した場合、メモリ上では「31 00 …」となります。
(0x31はASCIIコードで「1」を示します。)

上記より、1byteの箱に2byteのデータを突っ込んだ結果、保持したメモリ領域を無視して書き込まれます。
これを指して、メモリ破壊といいます。
そして、52行目でその現象は発生しています。

対応策は、input1のサイズを大きくすると解決します。
試しに、input1~input3のサイズを2byteにしてみて下さい。
それで上手くいったら、今度はinput1に10等の2byteのデータを入力してみて下さい。
似たような現象が発生するはずです。

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.