0

関数を呼び出すときに発生するエラーについて以下に説明しますsscanf

私のコードの一部:

#include <cstdio>
(..)
int device_num = 0;
int frameTime = sscanf(currentStringVector[2].c_str(), "%d", &device_num);

これは OmNet++ のモジュールの一部なので、 OmNet++ を使用してコンパイルします。GDB で次のエラー メッセージが表示されます。

「プログラムはシグナル SIGSEGV を受信しました。セグメンテーション違反です。__rawmemchr_sse2 () at ../sysdeps/x86_64/multiarch/../rawmemchr.S:31 31 ../sysdeps/x86_64/multiarch/../rawmemchr.S: Filen eller katalogen finns inte. in ../sysdeps/x86_64/multiarch/../rawmemchr.S"

に電話したときに問題が発生し始めましたsscanf

64 ビット システムの Ubuntu でプログラムを実行しています。上記の問題を解決するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

OMNeT ++を使用すると、コマンドラインからプログラムを実行するときにgdbなどのデバッガーを使用できます。IDEでは、コードをデバッグすることもできます。

私の推測では、それcurrentStringVector[2].c_str()は有効ではありません。たぶん、ベクトルはそれよりも小さいです。

于 2012-03-08T13:41:56.310 に答える