Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Svinina
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
#1

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

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

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

И вообще, меня интересует, как хранится программа в памяти. Где хранится код, где хранятся данные, что происходит при динамическом распределении памяти, чем оно отличается от статического и т. д. В книгах по С++ цельного структурированного ответа на эти вопросы пока найти не могу. Понимаю, что вопрос очень общий, и в рамках форума на него не ответить, поэтому, посоветуйте, пожалуйста, статьи, в которых это описано.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 23:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Организация памяти. (C++):

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

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

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

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

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

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

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

Не по теме:

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

1
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
05.11.2011, 23:44 #3
Объект( экземпляр ) класса содержит в себе только не статические поля.
1
Svinina
5 / 5 / 0
Регистрация: 28.11.2010
Сообщений: 81
06.11.2011, 00:00  [ТС] #4
А где тогда хранятся методы?
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
06.11.2011, 00:03 #5
Цитата Сообщение от Svinina Посмотреть сообщение
А где тогда хранятся методы?
Там же, где и обычные функции.
Функции\методы хранятся в коде программы. А объекты, создаваемые во время выполнения программы хранятся в памяти, отведенной при запуске программы.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
06.11.2011, 07:32 #6
На самом деле, полный ответ на этот вопрос никто дать не сможет, т.к. "состав" объекта не стандартизирован и реализуется по желанию разработчиков компилятора. Т.е. о количестве и порядке следования полей ещё можно говорить с почти 100% уверенностью, а вот о служебных данных уверенности уже быть не может. Т.е. при использовании (множественного) наследования, с некоторой долей уверенности можно говорить только о положении полей первого базового класса.

А в остальном, как уже и сказали, код один на всех, не статические данные создаются для каждого объекта свои.
0
Kastaneda
Нарушитель
Эксперт С++
4676 / 2880 / 233
Регистрация: 12.12.2009
Сообщений: 7,314
Записей в блоге: 2
Завершенные тесты: 1
06.11.2011, 10:23 #7
Цитата Сообщение от Svinina Посмотреть сообщение
При создании нескольких экземпляров этого класса, как будет храниться код его методов? Будут создаваться его копии, или он будет храниться в памяти в единственном экземпляре?
К всему вышесказанному добавлю. Методы хранятся в единственном экземпляре, при этом первым параметром в метод незаметно передается указатель на начало памяти, выделенной под объект, т.е. this. Таким образом методы работают с данными конкретного объекта, и за все это отвечает компилятор.
0
06.11.2011, 10:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 10:23
Привет! Вот еще темы с ответами:

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

Организация цикла С++ - C++
Добрый день. Нужно организовать ниже приведенный код таким образом чтобы программа никогда не выводила более 10 чисел в одной строке, и...

Организация функции - C++
Подскажите как можно, и можно ли вообще перевести данный код в 2 функции и вызывать их по такому принципу : while(TRUE) { if...

Организация БД по дате - C++
Тема далеко не новая и некоторые наводки на решения я находил уже на форуме, но лишь наводки. Суть такая: При вводе данных в БД в...


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

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

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