2

我目前有一个功能:

void clearBuffer(char* buffer, int length)
{
    for(int i=0; i < length; i++){ buffer[i] = '\0'; }
}

当我使用数组调用此函数时,出现错误:

非法指令(核心转储)

我在一个类的构造函数中调用这个函数,该函数被定义为公共的类变量,例如:

#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错误消息。

这两个功能不是等价的吗?首先可能导致错误的原因是什么?

注意:我只有在我的一台虚拟机上运行代码时才会遇到这个问题。当我在真正的生产机器上运行它时,没有Illegal instruction出现。

4

0 回答 0