我在构建代码时收到上述消息。
任何人都可以对这个问题有所了解并帮助我吗?
非常感谢
最好的问候
Chintan
更新的问题:以下代码出现上述错误。
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++;
}
答案 0 :(得分:1)
如果不知道你究竟在做什么的细节,很难肯定地说出来,但-1073740940 == 0xC0000374 == STATUS_HEAP_CORRUPTION。它有什么亮点吗?
[UPD] 假设将错误值解释为NTSTATUS是正确的,那么您正在破坏堆。进一步假设它出现在您显示的代码中,最有可能是nBin1 < 3
或nBin1 + 3 >= vBandSubset.size()
。在任何一种情况下,循环中的赋值都将覆盖vBandSubset
数据块之前或之后的技术堆区域。
由于这是一项测试,我建议您使用vBandSubset.at(i)
代替vBandSubset[i]
。与operator[]
不同,at()
验证其参数,如果它无效则会抛出异常。调试比内存损坏容易得多。
PS。您可以编辑您的问题并将代码放在那里。这样对读者来说更方便。