Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как узнать, какой функции какой файл *.a соответсвует? https://www.cyberforum.ru/ cpp/ thread446938.html
Друзья! Работаю с mingw, вот там надо так: если, допустим, вызываешь API- функцию, то надо подключать соответствующую библиотеку (?), делается это ключом линкёра примерно так: -lwww файл Эта...
Про деструктор и утечку памяти C++
Доброе время суток. Вот что дано: #include <string> #include <vector> class Symbols { protected: void add(std::string str); // добавления символа virtual void inputData() = 0; //...
Создать exe, запускающий exe C++
Говорю сразу: я ничего не смыслю в програмировании; зачем подался на такой форум? Надеюсь получить ответ на свой вопрос,упавая на то, что его реализация не такая сложная. У меня возникла...
C++ Странное поведение bool Помогал отлаживать код и мы наткнулись на удивительное. Кодер скрыл отображение варнингов в VS2010. Метод М1 не всегда возвращал значение типа bool. И потому в методе М2, вызывающем метод М1,... https://www.cyberforum.ru/ cpp/ thread445695.html
C++ Как средствами BC 3,1 запросить свободное место на указанном жёстком диске? https://www.cyberforum.ru/ cpp/ thread444851.html
Извиняюсь, если создал лишнюю тему, но ничего по своей проблемке я вроде не заметил. Если что-то есть, поправьте. А вопрос в следующем: как средствами BC 3,1 запросить свободное место на указанном...
C++ Указания адреса функции
Есть библиотека. Нужно чтобы функция в моей библиотеке указывала на функцию в чужой. Вот мой код: typedef int (WINAPI WJMP)(); extern "C" __declspec(dllexport) WJMP Test(void); *Test=...
C++ Как аннулировать потоки, которые заблокированы по переменной условия (pthread)?
И никак, что ли не аннулировать, получается? Вот, допустим, есть несколько потоков которые заблокированы по переменной условия: pthread_mutex_lock (&mutex); if (!(mozno_idti)) { ...
C++ Есть 4 потока. После осуществления блокировки барьером, 3 куда-то деваются, куда? (pthreads) Друзья! Как мог упростил код, вот суть В цикле создаются 4 вспомогательных потока, кадый из которых в цикле же 2 раза выводит свой TID. После первого вывода TIDа каждым потоком срабатывает... https://www.cyberforum.ru/ cpp/ thread444183.html
C++ Внедрение мультиплеера C++ https://www.cyberforum.ru/ cpp/ thread443994.html
Привет дорогие форумчане. Возникла задача сделать мультиплеер для игры(исходных кодов которой я не имею) . Разбил на задачки и вот одна из них. Первая задача это перемещение игроков. вот моя...
C++ Графический интерфейс приложений на C? Как сделать графический интерфейс приложения под Linux написанного на C? https://www.cyberforum.ru/ cpp/ thread443785.html
Evg
Эксперт CАвтор FAQ
21116 / 8132 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
17.02.2012, 09:35 0

[C++] Взятие адреса конструктора. Физическое время существование объекта.

17.02.2012, 09:35. Просмотров 10549. Ответов 69
Метки (Все метки)

Ответ

Цитата Сообщение от AzaKendler Посмотреть сообщение
получается место под "объект" мы получили давно
Нет. Тут речь идёт только об автоматических объектах, а потому в исполняемом файле (в образе программы в памяти) этой памяти нет. Эта память есть ТОЛЬКО во время работы функции

C
1
2
3
4
5
6
7
8
9
int main (void)
{
  int x; // логически объект "x" родился в этой точке
  x = 0; // инициализация (как бы конструктор, но для простоты просто обнуление)
  int y; // логически объект "y" родился в этой точке
  y = 0;
  int z; // логически объект "y" родился в этой точке
  z = 0;
}
реально в процессе исполнения код "на пальцах будет таким"

Код
# Код процедуры main
main:
  выделим место в стеке размером 12 байт (сразу для всех трёх переменных)
  при работе со стеком у нас всегда есть некий указатель текущего окна в стеке
  (FP = frame pointer), через который в функции мы адресуемся ко всем переменным.
  Как правило стек растёт в сторону уменьшения адресов, а потому обращение
  ко всем объектам в стеке идёт с отрицательными смещениями

  # int x;
  # логическое рождение объекта "x". Технически оно не выражается ни в какие
  # машинные операции, т.к. память под все автоматические объекты процедуры
  # мы выделили скопом при входе в процедуру. Однако начиная с этого момента
  # память, зарезервированная под "x", начинает принадлежать только объекту "x",
  # и компилятор больше не имеет права использовать его под свои нужды (ну мало
  # ли там что ему понадобилось)

  # x = 0;
  код, который делает запись нуля по адресу FP - 4

  # int y;
  # тут всё аналогично "x"

  # y = 0;
  код, который делает запись нуля по адресу FP - 8

  # int z;
  # тут всё аналогично "x" и "y"

  # z = 0;
  код, который делает запись нуля по адресу FP - 12


Вернуться к обсуждению:
[C++] Взятие адреса конструктора. Физическое время существование объекта.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2012, 09:35

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

Проверка URL адреса на существование
Доброго времени суток! Есть определенный цикл по перебору страниц сайта, цикл определяет...

Проверка email адреса на существование
Доброго времени суток. Есть надобность в небольшой программе. Суть в том что после ввода email...

Проверка на существование proxy адреса
Добрый день У меня такой вопрос Каким кодом я могу осуществить проверку на существование proxy...

Файлы: ввод адреса объекта и вывод данных объекта
Всем привет. Хочу сделать программу, в консоль которой, вводится адрес папки/файла, после чего,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.