реклама на сайте
подробности

 
 
> Динамически создаваемые объекты классов, Принцип работы
Yaumen
сообщение Jun 17 2010, 05:10
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



В одном из проектов не нашел ничего более удобного как использование динамически создаваемых классов. Создаваться они будут один раз при запуске и в процессе работы удаляться и пересоздаваться не будут. Какие именно классы будут создаваться и использоваться будет задаваться проектом!!! При запуске, я буду считывать из проекта необходимые данные и в зависимости от них буду создавать те или иные классы, причем возможны и несколько объектов одного класса.

На PC, в моем представлении, объект класса создается в оперативной памяти, однако в ARM оперативная память используется для хранения данных, а собственно исполняемый код находится во флэш, и естественно ничего динамически там создать нельзя. Можно ли использовать динамически создаваемые объекты на ARM и как они в этом случае работают!?

P.S. На всякий случай уточню, что программа пишется под LPC2366 (ARM7)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Yaumen
сообщение Jun 17 2010, 07:01
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Удалены будут только те методы, которые вообще нигде в программе не используются, я же имел в виду, что методы будут располагаться в памяти флэша, даже если я не создал динамически объект класса, в котором они используются smile.gif)

Раз уж описанная мной методика верна, то, интересно, насколько она замедляет работу по сравнению с обычными объектами, созданными статически. Есть статистика?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 17 2010, 12:52
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Yaumen @ Jun 17 2010, 10:01) *
Удалены будут только те методы, которые вообще нигде в программе не используются, я же имел в виду, что методы будут располагаться в памяти флэша, даже если я не создал динамически объект класса, в котором они используются smile.gif)
Если во всей вашей программе нет ни одного создания объекта какого-то класса (неважно - автоматически (на стеке, локально), статически (глобально) или динамически (через оператор new()), и нет ни одного обращения к функциям-членам (например, через приведенный указатель), то весь код этого класса будет выкинут. Если объект создается или есть обращения через приведенный указатель, но нет ни одного обращения к невиртуальной функции-члену, то код этой функции-члена будет выкинут.
Цитата(baralgin @ Jun 17 2010, 11:11) *
Статические объекты компилятор сможет лучше отоптимизировать, поэтому они могут работать чуть быстрее(адреса данных заранее известны).
Только при выполнении встраиваимых функций-членов. И то - не всегда, не каждый компилятор и не на каждой платформе.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 17:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016