初始化数组时出现System.AccessViolationException

时间:2010-02-27 18:43:42

标签: visual-c++

void BinaryTree::InitializeFromFile(string Filename){
 ifstream inFile;
 treenode* Freq[256];
 inFile.open(Filename.c_str(), fstream::binary);
 if(inFile.fail()){
  cout<<"Error in opening file "<<Filename;
  return;
 }
 for(int i=0;i<=255;i++){ 
  Freq[i]->weight=0; 
  Freq[i]->data = '0'+i; 
  Freq[i]->LChild = NULL; Freq[i]->RChild=NULL; Freq[i]->Parent=NULL;
 }
 char c;
 inFile.get(c);
 while(!inFile.eof()){
  Freq[c]->weight ++;
  inFile.get(c);
 }
}

我在for循环中遇到了访问冲突异常。即使我注释掉某些行,它也会在该循环的下一行给出错误。

修改:行Freq[c]->weight ++;也有效吗?我可以根据char值转到数组的特定部分吗?

1 个答案:

答案 0 :(得分:1)

您似乎永远不会初始化Freq表。它包含随机指针。取消未初始化的指针会导致未定义的行为。

您应该在Freq[i] = new treenode之前添加Freq[i]->weight=0;