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

 
 
> Общие данные экземпляров класса, C++
toweroff
сообщение Apr 15 2014, 08:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Подскажите такой момент.
Есть класс, при инициализации он создает 3 блока данных, из которых только один блок уникальный для этого экземпляра, остальные - совершенно одинаковые для каждого экземпляра, не модифицируются. Так как занимают они приличный объем, есть сильное желание от них избавиться, точнее - выделить за пределы класса
Пока на ум приходит только некий глобальный флаг, который выставлять после инициализации самого первого экземпляра, но, скорее всего, есть более элегантное решение, просто я о нем не знаю sm.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XVR
сообщение Apr 15 2014, 10:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
и так тоже думал, но я забыл указать еще одну вводную - уникальный блок экземпляра как раз используется сначала для формирования sBox, потом создается sBoxInv, потом - expandedKey в том самом уникальном блоке экземпляра
Пока видно, что все данные уникальные. Где тут 'общие данные'?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 15 2014, 10:45
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(XVR @ Apr 15 2014, 14:29) *
Пока видно, что все данные уникальные. Где тут 'общие данные'?

Откуда видно-то? sm.gif
еще раз - в "общих" блоках формируются sBox и sBoxInv (они - общие, фактически - константы, но в RAM), но для их формирования (сейчас, в реализации на C) используется уникальный блок, в котором, после формирования sBox и sBoxInv, формируется expandedKey
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 15 2014, 10:47
Сообщение #4


Гуру
******

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



Цитата(toweroff @ Apr 15 2014, 13:45) *
но для их формирования (сейчас, в реализации на C) используется уникальный блок,
В смысле - используется как временный промежуточный буфер?


--------------------
На любой вопрос даю любой ответ
"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
toweroff
сообщение Apr 15 2014, 10:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Сергей Борщ @ Apr 15 2014, 14:47) *
В смысле - используется как временный промежуточный буфер?

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

UPD
я могу, конечно, использовать этот временный блок как некий буфер обмена по разным интерфейсам в дальнейшем, но это не кошерно же sm.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 15 2014, 12:01
Сообщение #6


Гуру
******

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



Цитата(toweroff @ Apr 15 2014, 13:49) *
конечно, и не хотелось бы для этого выделять статический массив. Куча также не используется, поэтому, для расчета таблиц, выделить и бросить этот кусок расточительно
Что мешает этот блок объявить как автоматическую переменную в конструкторах sBox и sBoxInv? Он будет выделен на стеке и после выполнения конструкторов освобожден. На крайний случай разместить его при помощи placement new() в том месте, где потом будет жить "буфер обмена по разным интерфейсам в дальнейшем"


--------------------
На любой вопрос даю любой ответ
"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
toweroff
сообщение Apr 15 2014, 12:06
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Сергей Борщ @ Apr 15 2014, 16:01) *
Что мешает этот блок объявить как автоматическую переменную в конструкторах sBox и sBoxInv? Он будет выделен на стеке и после выполнения конструкторов освобожден. На крайний случай разместить его при помощи placement new() в том месте, где потом будет жить "буфер обмена по разным интерфейсам в дальнейшем"

Сергей, куча вообще не используется
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Общие данные экземпляров класса   Apr 15 2014, 08:43
- - Сергей Борщ   Напрашивается сделать их статическими членами. И п...   Apr 15 2014, 08:58
|- - toweroff   Цитата(Сергей Борщ @ Apr 15 2014, 12:58) ...   Apr 15 2014, 09:10
|- - Сергей Борщ   Цитата(toweroff @ Apr 15 2014, 12:10) Это...   Apr 15 2014, 09:50
|- - toweroff   Цитата(Сергей Борщ @ Apr 15 2014, 13:50) ...   Apr 15 2014, 10:14
||- - Сергей Борщ   Цитата(toweroff @ Apr 15 2014, 15:06) куч...   Apr 15 2014, 12:29
|- - XVR   Цитата(toweroff @ Apr 15 2014, 14:45) еще...   Apr 15 2014, 10:59
|- - toweroff   Цитата(XVR @ Apr 15 2014, 14:59) Ясно. А ...   Apr 15 2014, 11:21
- - XVR   Цитатая же и спрашиваю - можно ли это сделать боле...   Apr 15 2014, 13:21
- - toweroff   XVR, спасибо, проясняется картина. Здесь тогда воз...   Apr 15 2014, 14:00
- - XVR   ЦитатаЗдесь тогда возникает вопрос о использовании...   Apr 16 2014, 09:29


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

 


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


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