运行代码时,我在 Visual Studio 中收到此错误:fileIO_experiment.exe 中 0x0028457b 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000018
我正在尝试在我的一个函数中分配一个结构数组。指向该数组的指针在 main 中声明,但在名为 getRow 的函数中传递和使用。当我尝试为结构数组中的元素赋值时,就会出现问题。
这是我的代码:
在主函数中:
int main()
{
.
.
.
DataRow* dataRowPointer = 0;
dataRowIndex = 0;
while ( myfile.good() )
{
getRow( myfile, &loc, tcsPointer, dataRowPointer );
globalLineCounter++;
}
.
.
在函数 getRow 中:
void getRow( std::istream& myfile, HeaderLocations* loc, TestCaseSet* tcsPointer, DataRow* dataRowPointer )
{
std::string line;
std::string word;
int currentLoc = 0;
bool startStop = true;
std::getline( myfile, line);
std::stringstream sline(line);
while ( sline >> word )
{
if( word == "start" )
{
dataRowIndex = -1;
dataRowPointer = new DataRow[MAX_NUMBER_DATA_ROWS_PER_TEST_CASE_SET]; //Declaration of array of DataRow structs
initializeDataRowPointer( dataRowPointer ); // Setting all values of previous array to default values
testCaseSetID = captureTestCaseSetNumber( line, tcsPointer );
getHeaderRow( myfile, loc );
startStop = true;
break;
}
else if ( word == "stop" )
{ tcsNumber++;
dataRowPointer = 0;
startStop = true;
break;
}
else
{ startStop = false; }
}
if( !startStop )
{ dataRowIndex++;
dataRowPointer[dataRowIndex].tcSetNum = testCaseSetID; // <-- PROBLEM OCCCURS HERE
getDataRow( line, loc, tcsPointer, dataRowPointer ); }
}
dataRowIndex 是一个全局变量。在我修复此代码之前,这只是暂时的。如果我的代码比 C++ 更多,我提前道歉,我仍然是新手。
帮助将不胜感激。谢谢你!