Я получаю эту ошибку, когда выполняю следующую функцию, и я понятия не имею, что это значит. Вот функция:
void readf2()
{
std::ifstream inFile("f2",std::ios_base::binary);
std::string str(2, '\0');
int i = 0;
while(inFile.read(&str[i],2)){
cout<<"Success: ["<< i << "] = "<< (int)str[i]; ;
cout<<"\n";
i++;
}
}
Функция работает некоторое время, записывая различные номера в консоль, а затем бум падает с этой ошибкой, обратной сетью и картой памяти. Это происходит потому, что я освобождаю адрес памяти, который не существует?
Скорее всего, вы даете read
вызову указатель на память, который не принадлежит вам.
str[i]
возвращает смещение в строке, но это не гарантирует, что у вас достаточно памяти для чтения в это место (+2).
То, что вы, вероятно, имели в виду, состояло в том, чтобы иметь массив int
s и использовать i
в качестве индекса для этого:
void readf2()
{
std::ifstream inFile("f2",std::ios_base::binary);
std::vector< int > str; // if you're reading int - use int, not string
int i = 0;
int j;
while(inFile.read(&j,sizeof(int))){ // check what the content is here
str.push_back(j);
cout<<"Success: ["<< i << "] = "<< str[i];
cout<<"\n";
i++;
}
}