运行时错误:_block_type_is_valid(phead-nblockuse)

时间:2013-07-29 05:10:34

标签: c++ dynamic-variables

首先,我会告诉你我的代码。

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数组的项目中。
  • 打印2D阵列的项目。
  • 最后,从内存中删除该数组&lt;&lt; and this reason of the problem

测试我的应用程序时总是给我运行时错误消息_block_type_is_valid(phead- nblockuse).

我知道这个问题,因为delete[] str;

1 个答案:

答案 0 :(得分:1)

str是一个指针数组,每个指针都指向一个动态分配的数组。

您需要遍历它并在每个元素上调用delete []

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

注意:我已经为OP提供了an example using std::vector, std::string and std::getline