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值转到数组的特定部分吗?
答案 0 :(得分:1)
您似乎永远不会初始化Freq
表。它包含随机指针。取消未初始化的指针会导致未定义的行为。
您应该在Freq[i] = new treenode
之前添加Freq[i]->weight=0;
。