• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

выделение памяти под локальные переменные

  • Автор темы Neirosvit
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

Neirosvit

как реализуется процесс выделения памяти под переменную в моей программе.

к примеру у меня есть локальная переменная в блоке программы

{
int a=7; // локальная переменная
....
}

на стадии компиляции я так понимаю под нее не выделена память и входе выполнения программы Windows выделяет память правильно или нет я мыслю???

Добавлено: готовая программа понятно что вся в оперативке на как пишут в книге есть локальные есть глобальные переменные с разным классом памяти

глобальные уже есть в памяти на стадии запуска программы а локальные в ходе выполнения программы появляются тоесть в оперативе их нет

так вом мне и интересно кто выделяет память под них и как этот механизм работает
 
G

grigsoft

Какой маллок, вы чего? Локальные перменные выделяются в стеке, и делает это компилятор увеличивая esp на нужную и длину и генеря код с использованием подходящих смещений.
 
E

eReS

Добавлено: готовая программа понятно что вся в оперативке на как пишут в книге есть локальные есть глобальные переменные с разным классом памяти
Между ними различие только в том, что глобальные переменные хранятся в памяти напротяжении всей программы, а локальвые от начала до окончания выполнения функции, в которой они находяться.

При старте функции с локальными переменными программа выделяет память под них, по окончании освобождает.
 
N

Neirosvit

Локальные перменные выделяются в стеке, и делает это компилятор увеличивая esp на нужную и длину и генеря код с использованием подходящих смещений.

Вариант с компилятором точно не верен так как я написал программу откомпилировал ее скинул на флешку принес другу у него вообще нет компиляторов на компе запустил программа работает (пример конечно вообще ламерский на наглядный что бы тему компиляторов не поднимать в предь ибо говорим уже о завершенной откомпилированной программе *.exe).

из своей же логики делаю вывод когда моя программа осталась один на один с компьютером моего друга ей ни кто не может помочь выделить память на ее локальные переменные кроми виндовс.
 
N

NicolasI

выделение сводится к инструкции процессора: sub esp, N
N - размер переменной
саму инструкцию генерит компилятор, разумеется
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!