gpt4 book ai didi

c - 是什么导致了堆栈溢出?我该如何解决它?

转载 作者:行者123 更新时间:2023-11-30 14:40:39 24 4
gpt4 key购买 nike

我正在做计算机图形学的作业。我们需要使用floodfill来绘制一个区域,但是无论我如何更改Visual Studio的reserve stack,它总是会跳出stackoverflow .

void Polygon_FloodFill(HDC hdc, int x0, int y0, int fillColor, int borderColor) {
int interiorColor;
interiorColor = GetPixel(hdc, x0, y0);
if ((interiorColor != borderColor) && (interiorColor != fillColor)) {
SetPixel(hdc, x0, y0, fillColor);
Polygon_FloodFill(hdc, x0 + 1, y0, fillColor, borderColor);
Polygon_FloodFill(hdc, x0, y0 + 1, fillColor, borderColor);
Polygon_FloodFill(hdc, x0 - 1 ,y0, fillColor, borderColor);
Polygon_FloodFill(hdc, x0, y0 - 1, fillColor, borderColor);
}

最佳答案

您可能有太大的区域需要填充,这会导致递归调用消耗程序中的所有执行堆栈。

您的选择:

  • 如果可以的话,进一步增加执行堆栈
  • 缩小面积(100x100 或 20x20 怎么样?)
  • 停止使用执行堆栈并使用工作原理类似但可以包含更多元素的数据结构(通过提高效率和/或能够增长/变得更大)
  • 使用不同的算法(例如,考虑从单个像素到像素的水平跨度,后者的数量会比前者少得多)

关于c - 是什么导致了堆栈溢出?我该如何解决它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55432179/

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