私は現在機能を持っています:
void clearBuffer(char* buffer, int length)
{
for(int i=0; i < length; i++){ buffer[i] = '\0'; }
}
この関数を配列で呼び出すと、エラーが発生します。
不正な命令 (コアダンプ)
public として定義されているクラス変数のクラスのコンストラクターでこの関数を呼び出します。
#define MAXLEN 256
class Message
{
public:
Message();
char msg[MAXLEN];
};
実装:
Message::Message()
{
clearBuffer(msg, MAXLEN);
}
くすくす笑うために、使用する関数を変更しましたbzero
:
void clearBuffer(char* buffer, int length)
{
bzero(buffer, length);
}
関数が機能し、Illegal instruction
エラーが発生しなくなりました。
これら2つの機能は同等ではありませんか? そもそもエラーの原因は何ですか?
注:この問題は、仮想マシンの 1 つでコードを実行した場合にのみ発生します。これを実稼働マシンで実行すると、noIllegal instruction
が表示されます。