| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Переполнение стека |
| Автор: makartetsky 27.2.2008, 20:30 | ||
Привет. Такая тема. (Использую рекурсивный растровый алгоритм flood fill.)
На строке if (Quasi.GetPixel(x,y).G > 0 && Quasi.GetPixel(x,y).R == 0 && Quasi.GetPixel(x,y).B == 0) происходит переполнение стека. Почему, не знаете? |
| Автор: makartetsky 28.2.2008, 00:00 |
| Marcusmae, к сожалению, этот алгоритм относится к числу тех, которые нельзя переписать без рекурсии. Что касается скобок - то нет, вроде не забыл. Может можно как то увеличить размер стека? |
| Автор: marcusmae 28.2.2008, 00:13 | ||||
Забудьте об этом. Для начало давайте в этом убедимся. Если что, логическое && имеет больший приоритет, чем неравенства. То есть скобки могли бы стоять так :
Нет?
Дааа? = Что-то я в этом сильно сомневаюсь! Распространяющийся из точки крестик ... над этим лучше подумать завтра, но предполагаю, что всё же он развёртывается в прямые циклы. Но ессесно это будет слегка другой алгоритм. |
| Автор: makartetsky 28.2.2008, 00:37 | ||
Насчет скобок. Всегда писал подобные условия без внутренних скобок - работало как надо. На досуге надо будет убедиться в этом путем побора примера.
Прошу заметить, не просто распространяющийся из точки крестик, а крестик, обходящий контуры, присутствующие на рисунке. А почему надо забыть про увеличение стека? |
| Автор: marcusmae 28.2.2008, 01:03 |
Потому что не делают так. Вам никакого стека не хватит. |