1

在 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。我看不出这段代码怎么会失败。

任何人都可以发现它的任何问题吗?

4

0 回答 0