Разница между bzero и установкой массива char, равного ‘\ 0’?

В настоящее время у меня есть функция:

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 ошибка.

Эти две функции не эквивалентны? Что может быть причиной ошибки в первую очередь?

Замечания: Эта проблема возникает только при запуске кода на одной из моих виртуальных машин. Когда я запускаю это на реальной производственной машине, нет Illegal instruction появляется.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector