Код (Text): .data? Buf DWORD ? bi BITMAPINFO <> ... ; create the bitmap invoke CreateDIBSection, 0, ADDR bi, DIB_RGB_COLORS, ADDR Buf, NULL, 0 ... invoke ZeroMemory, ADDR Buf, width * height ; В дебагере эта строка улетает в никуда Не могу понять где ошибка, вроде буфер создаётся при создании битмапа. В других примерах смотрел там используется такой же подход и всё работает, а у меня вылет с ошибкой.
dsoft, А то, что Buf DWORD ? резервирует, как и сказано, всего лишь четыре байта, не смущает? Тереть Buf на width*height байт означает убить следующий за ним bi практически наверняка.
А то, что Код (Text): invoke CreateDIBSection, 0, ADDR bi, DIB_RGB_COLORS, ADDR Buf, NULL, 0 создаёт место под этот буфер вам ни о чём не говорит?
Похоже, нужно было сделать так: Код (Text): mov eax, [Buf] invoke ZeroMemory, eax, width * height но пока толком не проверил. По крайней мере вылеты программы прекратились.
Да, приведённый код удобен как универсальный, например, для библиотеки. У меня же жёстко заданный битмап (256 цветов), хотя указанный код размера не добавляет.