@SaddledSharp
Кодер. Увлекаюсь информационной безопасностью.

"ошибка сегментирования" как исправить(С++)?

Всем привет! Пишу мульти-программу с функционалом которая упрощает жизнь, там присутствует проверка файла на вирусы, где я копирую код файла, и сравниваю с файлами которые лежат в моей папке с БД вирусами(пока что только один). В итоге во время копирования у меня выскакивает ошибка. Что делать? Вот код:
void antivirus(string path_file) {
	ifstream f;
	f.open(path_file);
	char *str;
	while (!f.eof())
	{
		char *str=new char[255];
		f.getline(str,255);
	}
	f.close();

	ifstream virus;
	virus.open("viruses/virus1.cs");
	char *vir;
	while (!virus.eof())
	{
		char *vir = new char[255];
		virus.getline(str,255);
	}
	virus.close();

	cout << "Проверка прошла успешно." << endl;	

	if (str == vir) {
		cout << "Файл вредоносный!" << endl;
	}
	else {
		cout << "Файл безопасен!" << endl;
	}
}


Я никогда не встречался с такой ошибкой, не знаю как исправить и что вообще делать. Программа кроссплатформенная, и в начале определяет систему(не знаю зачем я это сделал, ведь на плюсах нужно во время написания определять под какую платформу я буду писать, но всё же), но не в этом суть. Строчек кода: 400.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
@lorc
В данном случае ошибка в строке virus.getline(str,255);. Там должно быть virus.getline(vir,255);. Именно это приводит к segfault. Но как я написал в комментарии к другому ответу - это не единственная проблема в вашем коде.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
Ошибка связанна с памятью. Си язык, который требует точного описания действий, которое вы поленились сделать. Где выделение памяти для переменной? Компилятор не будет угадывать сколько нужно памяти для конкретного файла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы