Cтраница 1
Стек вызовов отслеживает путь выполнения программы. Если функция main () вызывает функцию Animal: : GetFavoriteFood (), а функция GetFavoriteFood () - функцию Animal: : LookupPreferences (), которая, в свою очередь, вызывает функцию fstream: : operator (), то все эти вызовы заносятся в стек вызовов. Рекурсивная функция может оказаться в стеке вызовов много раз. [1]
![]() |
Действие оператора tv. [2] |
Стек вызовов аналогичен обычному стеку вызова подпрограмм. [3]
Исключение передается в стек вызовов для каждого вложенного блока. По мере прохождения стека вызываются деструкторы для локальных объектов, в результате чего эти объекты разрушаются. [4]
![]() |
Действие оператора tv. [5] |
Стек вызовов аналогичен обычному стеку вызова подпрограмм. [6]
![]() |
Окно Immediate. [7] |
Это приводит к закрытию окна диалога CallStack ( Стек вызова) с последующей установкой курсора на строку, содержащую вызов данной процедуры. [8]
Вызовы функций и процедур в процессе выполнения программы организуются с помощью стека вызовов. При вызове очередной функции точка ее вызова заносится в этот стек. Если из этой функции вызывается другая, в момент ее вызова точка вызова тоже заносится в конец стека. При завершении выполнения функции ее данные удаляются из стека вызовов. [9]
Как только программа остановилась в контрольной точке, вы можете просматривать переменные, стек вызовов, символы или перемещаться по исходному тексту. Просмотрев интересующие вас переменные и объекты, вы можете продолжить нормальное выполнение программы, щелкнув на кнопке Run. Ваше приложение снова начнет выполняться в обычном режиме, пока не будет достигнута следующая контрольная точка. [10]
Если список вызовов содержит бессмысленную информацию, то вполне возможно, что произошло разрушение стека вызовов. Вероятность такой ситуации в 32-разрядной программе достаточно низка, по сравнению с 16-разрядной, но все же это не исключено. [11]
![]() |
Окно диалога Locals.| Окно диалога Call Stack. [12] |
После прерывания выполнения программы в процессе ее отладки можно использовать окно диалога Call Stack ( Стек вызова), представленное на рис. 6.7. В нем выводится список процедур, которые были запущены, но не завершены. [13]
Нет, в стеке вызовов перехват исключения может осуществляться в любом месте, после чего стек вызовов будет пройден то того места, где происходит обработка исключения. [14]
Абстрактная МФП-машина имеет четыре компонента: память для хранения программы, содержащую компилированный код всех комбинаторов; стек для вычислений, вмещающий аргументы комбинаторов или временных величин ( tv); стек вызовов, содержащий адреса возврата и кучу, хранящую структуры данных, создаваемые программой, и все замыкания, возникающие вследствие частичного применения функций. [15]