Во-первых, я покажу вам мой код.
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
}
Поведение предыдущего кода:
and this reason of the
problem
,При тестировании мое приложение всегда выдает мне сообщение об ошибке во время выполнения _block_type_is_valid(phead- nblockuse).
Я знаю проблему, потому что это delete[] str;
str
является массивом указателей, каждый из которых указывает на динамически размещенный массив.
Вам нужно перебрать его и позвонить delete []
на каждом элементе.
for(int i=0; i < count; ++i){
delete [] str[i];
}
Заметка: Я уже предоставил ОП пример использования std::vector
, std::string
а также std::getline
.
Других решений пока нет …