Описание тега activation-record

1 ответ

Используется ли запись активации при поиске строки ошибки?

Так что недавно я наткнулся на термин "запись активации" и был очень заинтересован тем, как он работает и для чего он используется. Мой вопрос был в том, как глубоко это может пойти? Я понимаю, что это стековый фрейм, и запись меняется по мере измен…
13 фев '14 в 03:38
2 ответа

Длина записи активации

Я получаю 6,4,3 за первые 3 вопроса соответственно, но я не знаю, как выяснить последний. Тем не менее, руководство по решению указало 7,5,4,18 в качестве ответов. int sum(int x[], int N) { int k = 0; int s = 0; while (k < N) { s = s + x[k]; k = …
11 янв '10 в 04:53
0 ответов

Статическое распределение и распределение стека в дизайне компилятора

Я не ясно о том, было ли статическое и стек размещения? Является ли статическое распределение статическим и динамическое распределение стека? Тогда к чему относится распределение кучи? Как с этим связана запись активации? Я думал, что запись активац…
4 ответа

Значение локальной переменной в одной функции, используемой в другой функции (c программирование)

#include<stdio.h> void bar() { int a=4; } void foo() { int a; printf("%d",a); } int main() { bar(); foo(); } Я уверен, что вышеприведенная программа выдает результат в виде некоторого ненужного значения (вот что происходит, когда я компилирую …
23 окт '13 в 18:25
0 ответов

Что такое ARP (указатель активной записи)?

В курсах по компиляции я вижу: ARP (указатель активной записи?? или указатель записи активации??) и: OLD ARP. Я понимаю, что он используется для получения параметров в стеке или для получения локальных переменных. Но я не понимаю больше об этом (это…
1 ответ

Переменная области действия блока и запись активации

Я понимаю, что локальные переменные (наряду с другими вещами) помещаются в запись активации. И запись активации должна существовать до того, как функция начнет выполняться. Рассмотрим функцию ниже: void f(void) { int i; scanf("%d", &i); if (i &g…
13 дек '17 в 15:32
1 ответ

На каком этапе создания двоичного файла определяется запись активации?

Это на этапе предварительной обработки или компиляции, скажем, на gcc? Это отличается от других компиляторов?
10 сен '09 в 11:05
2 ответа

C - Адрес переменных в записях активации

Какой самый быстрый и простой способ найти адрес памяти первой локальной переменной в записи активации? (В т..) Не имеет значения, что мы уже заявили. Может быть просто, как char *s = 'Hello world!' Спасибо!
1 ответ

Изменение потока выполнения программы по сигналу и адресу возврата

Я пытаюсь изменить поток выполнения программы, изменив адрес возврата функций в этом коде: void s(int signum) { int b = 1; *(&b+3) = *(&b+3) + 4; } void f() { while(true); printf("f exit\n"); } int main() { signal( SIGCONT, s ); f(); printf(…
09 июл '15 в 17:55
1 ответ

Почему я получаю SIGSEGV с этим безусловным прыжком?

Я попытался запустить этот код в Linux, чтобы увидеть, что произойдет: int fn(void) { return 0; } int main(void) { __asm__("jmp fn;"); } Я не вижу никаких причин для прекращения выполнения SIGSEGV, но это то, что я получаю. Я ожидал, что поток будет…
16 окт '16 в 19:57
1 ответ

Активация записи

Мне трудно понять запись активации (я прочитал несколько ответов об этом). Предположим, у нас есть код int n( int a){ int b = a/2; return a + b; } int main (){ int first = 1; int second = n(first); int third = 3; int fourth = n(third); return 0; } к…
12 янв '17 в 13:00
4 ответа

У main есть обратный адрес, динамическая ссылка или возвращаемое значение в C?

Согласно нашей книге, каждая функция имеет запись активации в стеке времени выполнения в C. Каждая из этих записей активации имеет адрес возврата, динамическую ссылку и возвращаемое значение. У главного тоже есть?
18 мар '13 в 00:51
0 ответов

Рамки стека и крышки

Как работает процесс выделения / освобождения фрейма стека для замыканий? В частности, когда возвращается замыкание (освобождение кадра), на что установлен счетчик программы? Примечание: это не для работы. Сейчас я прохожу курс по продвинутой архите…
02 ноя '17 в 01:10
0 ответов

Избегать замыканий в стеке выполнения?

Как замыкания Swift реализованы в стеке времени выполнения? Я представляю, что неэкранированные замыкания просто отправляются с дополнительной ссылкой доступа к фрейму стека, который он включает, но как работают экранирующие замыкания? Где хранится …
03 май '17 в 04:14
1 ответ

Как создать процесс, который запускает подпрограмму с переменным количеством параметров?

Я знаю, что здесь много вопросов о функциях, которые принимают переменное число аргументов. Я также знаю, что есть много документов о stdarg.h и его макросы. И я также знаю, как printf -подобные функции принимают переменное количество аргументов. Я …
1 ответ

main () создан с автоматической переменной, и если да, то какова его цель?

Я читал свой учебник в разделе стека вызовов функций и наткнулся на это: запись активации сообщает main, как вернуться в операционную систему (т. е. передать по адресу возврата R1), и содержит место для автоматической переменной main (т. е. a, котор…
10 авг '12 в 20:31
3 ответа

Рекурсия на Python и Scala

Почему эта Scala рекурсия def foo(id:Int): Int = { if (id == 0) { return id } else { foo(id - 1) } } foo(2) возвращается 0в то время как эта рекурсия Python возвращается None? def foo(id): if id == 0: return id else: foo(id - 1) foo(2) Каким образом…
31 июл '17 в 21:01
1 ответ

Будет ли переменная 'x' в этом фрагменте кода храниться в памяти стека, в куче или в обеих?

Так что относительно переменной int x, В начале этого урока int x и и String s хранятся в памяти кучи. Тем не менее, когда конструктор инициируется, это int x хранится в памяти стека И кучи памяти, так как конструктор технически метод или нет? publi…
22 апр '19 в 22:25
2 ответа

Попытка увеличить локальную переменную из отдельного метода, но не работает. Путаница по поводу активации стека / записи

public class Demo { public static void main(String[] args){ Demo instance = new Demo(); instance.init(); } public void init() { int size = 0; inc(size); System.out.println(size); } public int inc(int size){ size++; return size; } } Когда я вызываю к…
1 ответ

Просить пользователя ввести значение между определенным диапазоном рекурсивно в JAVA?

Я пишу код на Java, где система попросит пользователя ввести целое число от 1 до 10 (оба включены), и если значение выходит за пределы допустимого диапазона, он должен рекурсивно попросить пользователя ввести значение еще раз. И в конце я должен выв…