在 VS 2012 中启用静态代码分析时,以下代码因缓冲区溢出而失败。
SimulationData result = rri->getSimulationResult();
//Extract the data and return struct..
RRResult* aResult = new RRResult;
aResult->RSize = result.rSize();
aResult->CSize = result.cSize();
int size = aResult->RSize*aResult->CSize;
aResult->Data = new double[size];
int index = 0;
//The data layout is simple row after row, in one single long row...
for(int row = 0; row < aResult->RSize; row++)
{
for(int col = 0; col < aResult->CSize; col++)
{
aResult->Data[index++] = result(row, col); //Over run here! but how?
}
}
RRResult 是一个结构,Data 是一个双指针。SimulationData 是一个具有“隐藏”数据的类,其大小为 rSize *cSize。我看不出这段代码怎么会失败。
任何人都可以发现它的任何问题吗?