В настоящее время у меня есть функция:
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
появляется.
Задача ещё не решена.
Других решений пока нет …