QWERTYProgrammer писал(а):
Вроде уже когда-то обсуждалось, но внятного объяснения так и не было, почему простейшая программа с аллокацией большого массива на стеке на 2-3 запуске может убить среду ББ?
Код:
MODULE TestCrash1;
IMPORT Log := StdLog;
CONST n=8000;
PROCEDURE Do*;
VAR a: ARRAY n,n OF REAL;
BEGIN
Log.Int(LEN(a,0)); Log.Ln;
END Do;
END TestCrash1.
Да, тут такая фигня получается. На переполнение стека ББ выдаёт стандартный системный WinApi.MessageBox. Штука в том, что всю жизнь, сколько помню, эта процедура была блокирующей, т.е. не возвращала управление до нажатия пользователем кнопки ok. Но не знаю почему (то ли начиная с XP? Я недавно перешёл, сидел на 2000-м), теперь она отдаёт управление среде. И если я не нажму кнопку OK в показанном диалоге, а продолжу работу в среде при открытом сообщении, то начинается полная фигня. В частности, фатальное падение.