5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
1 | |
Организация памяти.05.11.2011, 23:32. Показов 4608. Ответов 6
Метки нет (Все метки)
Здравствуйте. Объясните, пожалуйста, вот что:
Допустим есть класс, с определенным количеством полей и определенным набором методов. При создании нескольких экземпляров этого класса, как будет храниться код его методов? Будут создаваться его копии, или он будет храниться в памяти в единственном экземпляре? И вообще, меня интересует, как хранится программа в памяти. Где хранится код, где хранятся данные, что происходит при динамическом распределении памяти, чем оно отличается от статического и т. д. В книгах по С++ цельного структурированного ответа на эти вопросы пока найти не могу. Понимаю, что вопрос очень общий, и в рамках форума на него не ответить, поэтому, посоветуйте, пожалуйста, статьи, в которых это описано.
0
|
05.11.2011, 23:32 | |
Ответы с готовыми решениями:
6
организация виртуальной памяти Организация памяти для текстового редактора Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти)) Можно ли разместить переменную в нужную ячейку памяти и реально ли хранить данные, разбросанными по памяти? |
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
|
05.11.2011, 23:39 | 2 |
1
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
05.11.2011, 23:44 | 3 |
Объект( экземпляр ) класса содержит в себе только не статические поля.
1
|
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
|
|
06.11.2011, 00:00 [ТС] | 4 |
А где тогда хранятся методы?
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
06.11.2011, 00:03 | 5 |
Там же, где и обычные функции.
Функции\методы хранятся в коде программы. А объекты, создаваемые во время выполнения программы хранятся в памяти, отведенной при запуске программы.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
06.11.2011, 07:32 | 6 |
На самом деле, полный ответ на этот вопрос никто дать не сможет, т.к. "состав" объекта не стандартизирован и реализуется по желанию разработчиков компилятора. Т.е. о количестве и порядке следования полей ещё можно говорить с почти 100% уверенностью, а вот о служебных данных уверенности уже быть не может. Т.е. при использовании (множественного) наследования, с некоторой долей уверенности можно говорить только о положении полей первого базового класса.
А в остальном, как уже и сказали, код один на всех, не статические данные создаются для каждого объекта свои.
0
|
06.11.2011, 10:23 | 7 |
К всему вышесказанному добавлю. Методы хранятся в единственном экземпляре, при этом первым параметром в метод незаметно передается указатель на начало памяти, выделенной под объект, т.е. this. Таким образом методы работают с данными конкретного объекта, и за все это отвечает компилятор.
0
|
06.11.2011, 10:23 | |
06.11.2011, 10:23 | |
Помогаю со студенческими работами здесь
7
Резервирование памяти/освобождение памяти для трехмерного массива Разработка программы обмена местами двух целочисленных ячеек памяти без использования дополнительной памяти Выделение памяти, проверка на утечку памяти Распределение памяти. Динамическое выделение памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |