5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
1

Организация памяти.

05.11.2011, 23:32. Показов 4608. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Объясните, пожалуйста, вот что:
Допустим есть класс, с определенным количеством полей и определенным набором методов. При создании нескольких экземпляров этого класса, как будет храниться код его методов? Будут создаваться его копии, или он будет храниться в памяти в единственном экземпляре?

И вообще, меня интересует, как хранится программа в памяти. Где хранится код, где хранятся данные, что происходит при динамическом распределении памяти, чем оно отличается от статического и т. д. В книгах по С++ цельного структурированного ответа на эти вопросы пока найти не могу. Понимаю, что вопрос очень общий, и в рамках форума на него не ответить, поэтому, посоветуйте, пожалуйста, статьи, в которых это описано.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2011, 23:32
Ответы с готовыми решениями:

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

Организация памяти для текстового редактора
/* * Реверанс для модераторов: Я самостоятельно скопировал эту тему из раздела "Алгоритмы" (хотя...

Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти))
Вот тут появилась такая интересная задача: требуется сделать программу которая управляет 1024...

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

6
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
05.11.2011, 23:39 2
Цитата Сообщение от Svinina Посмотреть сообщение
Будут создаваться его копии
Нет
Цитата Сообщение от Svinina Посмотреть сообщение
он будет храниться в памяти в единственном экземпляре?
Да

Не по теме:

ровно пять букв

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
Цитата Сообщение от Svinina Посмотреть сообщение
А где тогда хранятся методы?
Там же, где и обычные функции.
Функции\методы хранятся в коде программы. А объекты, создаваемые во время выполнения программы хранятся в памяти, отведенной при запуске программы.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.11.2011, 07:32 6
На самом деле, полный ответ на этот вопрос никто дать не сможет, т.к. "состав" объекта не стандартизирован и реализуется по желанию разработчиков компилятора. Т.е. о количестве и порядке следования полей ещё можно говорить с почти 100% уверенностью, а вот о служебных данных уверенности уже быть не может. Т.е. при использовании (множественного) наследования, с некоторой долей уверенности можно говорить только о положении полей первого базового класса.

А в остальном, как уже и сказали, код один на всех, не статические данные создаются для каждого объекта свои.
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,112
Записей в блоге: 2
06.11.2011, 10:23 7
Цитата Сообщение от Svinina Посмотреть сообщение
При создании нескольких экземпляров этого класса, как будет храниться код его методов? Будут создаваться его копии, или он будет храниться в памяти в единственном экземпляре?
К всему вышесказанному добавлю. Методы хранятся в единственном экземпляре, при этом первым параметром в метод незаметно передается указатель на начало памяти, выделенной под объект, т.е. this. Таким образом методы работают с данными конкретного объекта, и за все это отвечает компилятор.
0
06.11.2011, 10:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2011, 10:23
Помогаю со студенческими работами здесь

Резервирование памяти/освобождение памяти для трехмерного массива
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены...

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

Выделение памяти, проверка на утечку памяти
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки...

Распределение памяти. Динамическое выделение памяти
an-1 an-2 ... a2


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru