0

現在、コンパイルはできますが実行時にクラッシュする c++ ファイルを実行しています。

デバッガーを開き、プログラムを実行すると次の行が表示されます。

プログラム受信信号 SIGSEGV、セグメンテーション違反。/lib/libc.so.1 からの strcat () の 0xff0ab210

その行が何を意味するのかわかりません。

説明できますか?

編集:

プログラムで strcat をどのように使用したかについての回答を受け取りました。私がこれを使用したのは、文字列を 16 進数に変換するために atoi メソッドと同等に使用することだけです。

Edit2: strcat ライブラリを使用するコードで何かを見たことがあります。それは .append 関数です。それが問題の原因でしょうか?

4

2 に答える 2

0

それはセグメンテーション違反です。通常、割り当てられていないメモリにアクセスしようとしていることを意味します。あなたが使用しstrcatているので、宛先文字列が割り当てられていないか、十分なメモリが割り当てられていないと推測しています。

于 2013-02-22T01:31:04.470 に答える
0

セグメント障害が strcat から発生した場合は、次のいずれかが発生した可能性があります。

  1. ソースは、null で終了していない C 文字列 (不正な形式の文字列) です。
  2. 宛先文字列に割り当てられたメモリ量は、ソースと宛先 + 1 (末尾の null) の両方を格納するには不十分です。

両方のケースがカバーされているかどうかを確認してください。うまくいけば、SIGSEGV が再び表示されることはありません。

于 2013-02-22T01:34:11.593 に答える