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