Ошибка времени выполнения: _block_type_is_valid (phead- nblockuse)

Во-первых, я покажу вам мой код.

std::ifstream file("accounts/22816.txt");
if(file){
char *str[50];
int count=0;
str[0] = new char[50];
while(file.getline(str[count], 50)){
count++;
str[count] = new char[50];
}
for(int i=0;i<count;i++){
std::cout << str[i] << std::endl;
}
delete[] str;  // Here is the problem
}

Поведение предыдущего кода:

  • Читайте содержимое текстового файла построчно.
  • Сохраните каждую строку в элементе 2D-массива.
  • Распечатать элементы двумерного массива.
  • Наконец, удалите массив из памяти << and this reason of the
    problem
    ,

При тестировании мое приложение всегда выдает мне сообщение об ошибке во время выполнения _block_type_is_valid(phead- nblockuse).

Я знаю проблему, потому что это delete[] str;

0

Решение

str является массивом указателей, каждый из которых указывает на динамически размещенный массив.

Вам нужно перебрать его и позвонить delete [] на каждом элементе.

for(int i=0; i < count; ++i){
delete [] str[i];
}

Заметка: Я уже предоставил ОП пример использования std::vector, std::string а также std::getline.

1

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

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

По вопросам рекламы [email protected]