Да глобальные примитивы инициализируются к ПУСТОМУ УКАЗАТЕЛЮ.
Пример:
int x;
int main(int argc, char**argv)
{
assert(x == 0);
int y;
//assert(y == 0); <-- wrong can't assume this.
}
Вы не можете сделать предположения о классах, структурах, массивах, блоках памяти на "куче"...
является самым безопасным только всегда инициализировать все.
Чтобы отследить проблему, вы можете попробовать следующее:
(setq max-specpdl-size 5) ; default is 1000, reduce the backtrace level
(setq debug-on-error t) ; now you should get a backtrace
C-h a ; in speedbar
Вы должны получить обратную трассировку ошибки, и в этот момент вы сможете отследить нарушившую процедуру.
I Я бы также попробовал загрузить emacs без вашего файла конфигурации ( emacs -q
), чтобы посмотреть, есть ли что-то в вашем .emacs, что влияет на работу. (Я не могу получить бесконечный цикл, используя Ch a
). И если это ваш .emacs, то лучший способ, который я нашел для этого, - это либо двоичный поиск (поместите ошибку (ошибка «лягушка»)
), либо что-то вроде того, что в середине вашего .emacs, load, test, если нет проблем, поместите ошибку на 3/4, в противном случае на 1/4, повторите ...) или вручную оцените ваш .emacs построчно (регион за регионом), проверяя после каждой порции. Эти настройки должны помочь.