gpt4 book ai didi

c++ - 堆栈溢出 C++

转载 作者:可可西里 更新时间:2023-11-01 18:41:44 30 4
gpt4 key购买 nike

这是我的代码。当我在 initImg 函数中访问 dtr 数组时,它给出了堆栈溢出异常。可能是什么原因?

#define W 1000
#define H 1000
#define MAX 100000
void initImg(int img[], float dtr[])
{
for(int i=0;i<W;i++)
for(int j=0;j<H;j++)
img[i*W+j]=255;

for(int j=0;j<H;j++)
{
img[j] = 0;
img[W*(W-1)+j] = 0;
}
for(int i=0;i<W;i++)
{
img[i*W] = 0;
img[i*W+H-1] = 0;
}
for(int i=0;i<W;i++)
for(int j=0;j<H;j++)
{
if(img[i*W+j]==0)
dtr[i*W+j] = 0; // <------here
else
dtr[i*W+j] = MAX; // <------here
}
}
int main()
{
int image[W*H];
float dtr[W*H];
initImg(image,dtr);
return 0;
}

最佳答案

这个:

int image[W*H];
float dtr[W*H];

在堆栈中创建每个 4 * 1000 * 1000 ~ 4 MB 的数组。堆栈空间有限,通常小于 4 MB。不要那样做,使用 new 在堆中创建数组。

int *image = new int[W*H];
float *dtr = new float[W*H];

关于c++ - 堆栈溢出 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6219878/

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