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 の「隠し」データを持つクラスです。このコードがどのように失敗するかわかりません。
誰でも問題を見つけることができますか?