bzero和设置char数组之间的差异是否等于'\ 0'?

时间:2013-09-02 23:33:00

标签: c++ buffer clear

我目前有一个功能:

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

0 个答案:

没有答案