0

我在构建代码时收到上述消息。

任何人都可以对这个问题有所了解并帮助我吗?

非常感谢

最好的祝福

钦坦

更新的问题:以下代码出现上述错误。

vector <double> vBandSubset (vBand.size(), 0.0); 
vBandSubset = vBand; 
double dMeanBand=GetMean(vBand); 
int j = 0; 
for (int i = nBin1 - 3; i <= nBin1 + 3; i++) 
{ 
    vBandSubset[i] = dMeanBand*(1 + 0.00001*j); 
    j++; 
}
4

1 回答 1

1

在不知道您到底在做什么的细节的情况下,很难肯定地说出任何事情,但是-1073740940 == 0xC0000374 == STATUS_HEAP_CORRUPTION。它有什么亮点吗?

[UPD]假设将错误值解释为 NTSTATUS 是正确的,那么您正在破坏堆。进一步假设它发生在您显示的代码中,很可能是nBin1 < 3or 或nBin1 + 3 >= vBandSubset.size(). 在任何一种情况下,您在循环中的分配都会覆盖vBandSubset数据块之前或之后的技术堆区域。

由于这是一个测试,我建议你使用vBandSubset.at(i)而不是vBandSubset[i]. 不像operator[],at()验证它的参数并且如果它是无效的就会抛出一个异常。异常比内存损坏更容易调试。

PS。您可以编辑您的问题并将代码放在那里。这样对读者来说更方便。

于 2012-08-09T12:50:21.877 回答