gpt4 book ai didi

c++ - 为数组分配新值时系统崩溃

转载 作者:行者123 更新时间:2023-11-28 00:53:28 25 4
gpt4 key购买 nike

我在这里发布了一个类似的问题:

why it crashes when assigning new values to arrays?

但这一次,又遇到了数组的问题。我的代码是这样的:

double diff[600][800][3];
cv::Mat value ( height, width, CV_8UC3 );
double mean[600][800][3];
....
for ( int i =0; i < 5; ++ i )
{
for ( int j = 0; j < 3; ++j )
{
for ( int m = 0; m < 2; ++m )
{
mean[i][j][m] = 10/m;
diff[i][j][m] = abs ( value.data[value.cols*i+j]-mean[i][j][m]);
}
}
}

它在行崩溃了:

diff[i][j][m] = abs ( value.data[value.cols*i+j]-mean[i][j][m]);

我什至省略了那行,只是写成这样:

double test = abs ( value.data[value.cols*i+j]-mean[i][j][m]);

它编译了,然后我添加了

std::cout << test << std::endl;

又崩溃了,这行也崩溃了:

diff[i][j][m] = test; 

我什至是这样改的:

double test = static_cast<double>(abs(value.data[value.cols*i+j]-mean[i][j][m]));
diff[i][j][m] = test;

又一次崩溃了。如果我这样写:

diff[i][j][m] = 10; 

它编译。我真的无法弄清楚问题所在。似乎这与堆栈溢出或数据类型无关。我什至尝试了 Aki Suihkonen 对我之前的问题的回答,但它无济于事。有人可以帮我在这里找到问题吗?

最佳答案

    for ( int m = 0; m < 2; ++m )
{
mean[i][j][m] = 10/m;
//...
}

这导致 m =0 的值被零除。可能是崩溃的原因。

关于c++ - 为数组分配新值时系统崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com