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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Neirosvit, 12 мар 2010.

Статус темы:
Закрыта.
  1. Neirosvit

    Neirosvit Гость

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

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

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

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

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

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

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

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.472
    Симпатии:
    27
    Почти. Не виндовс, а компилятор, вместо тебя вставляет malloc(), если грубо..
     
  3. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Какой маллок, вы чего? Локальные перменные выделяются в стеке, и делает это компилятор увеличивая esp на нужную и длину и генеря код с использованием подходящих смещений.
     
  4. eReS

    eReS Гость

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

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

    Neirosvit Гость

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

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

    NicolasI Гость

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

Поделиться этой страницей