[英]Access violation in c++
初學者程序員在這里。 我的有向圖程序中出現訪問沖突錯誤,我想知道是否有人可以告訴我原因。
這是故障代碼(不用擔心,數量不多)。 這段代碼來自我的主要功能。 我剛剛從文件中讀取了一些信息,對其進行了解析,然后嘗試使用一個名為InitialInsert的函數將其插入存儲桶中。
//Store parsed file values
sourceCity = line[0];
destinationCity = line[1];
miles = stoi(line[2]);
cost = stoi(line[3]);
//Insert parsed values into Info bucket
graph.InitialInsert(sourceCity, destinationCity, miles, cost, size++); //Size is initialized to 0
這是初始插入功能。
//InitialInsert function
void Graph::InitialInsert(string source, string destination, int distance, int price, int index)
{
InfoBuckets[index]->sourceCity = source;
InfoBuckets[index]->destinationCity = destination;
InfoBuckets[index]->miles = distance;
InfoBuckets[index]->cost = price;
}
這是從我的頭文件。
static int const ARRAY_SIZE = 1000;
struct InitialInfo
{
string sourceCity;
string destinationCity;
int miles;
int cost;
};
InitialInfo* InfoBuckets[ARRAY_SIZE];
當我點擊InitialInsert函數的第一行時,出現錯誤“訪問沖突讀取位置0xCCCCCCE4”。 這可能是一個愚蠢的問題,但是有人可以幫助我嗎?
您定義了一個由1000個InifitalInfo指針組成的ARRAY,但是InitialInfo [0]從未被初始化。
嘗試這個:
對象數組
InitialInfo InfoBuckets[ARRAY_SIZE];
...
void Graph::InitialInsert(string source, string destination, int distance, int price, int index)
{
InfoBuckets[index].sourceCity = source;
InfoBuckets[index].destinationCity = destination;
InfoBuckets[index].miles = distance;
InfoBuckets[index].cost = price;
}
要么
指針數組
InitialInfo *InfoBuckets[ARRAY_SIZE];
...
InfoBuckets[0] = new InitialInfo(); // You need create the object first before using
...
void Graph::InitialInsert(string source, string destination, int distance, int price, int index)
{
InfoBuckets[index]->sourceCity = source;
InfoBuckets[index]->destinationCity = destination;
InfoBuckets[index]->miles = distance;
InfoBuckets[index]->cost = price;
}
隨着@Roddy的推薦,您必須使用智能指針而不是新的運算符。 您可以在此鏈接中閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.