我目前有一个功能:
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
出现。