2

私は現在機能を持っています:

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が表示されます。

4

0 に答える 0