Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5

Конструктор с выделением памяти

25.05.2010, 17:53. Показов 1352. Ответов 1

Студворк — интернет-сервис помощи студентам
Среди всех данных есть указатель, память для которого выделяется в конструкторе, необходимый размер передается в параметрах конструктора. Так как размер памяти в процессе использования может изменяться, планирую сделать некоторое резервирование, то есть вместо указанного размера (если он слишком мал или равен нулю) применять константные значения. Например так:

Собственно данные:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private: // data
 
   // default size
   static const size_t m_defsize_x = 10;
   static const size_t m_defsize_y = 10;
   static const size_t m_defsize_z = 10;
 
   // current size
   size_t m_size_x;
   size_t m_size_y;
   size_t m_size_z;
 
   // 3d pointer 
   T *** m_ptr;
И конструктор:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   array3d(uint x = 0, uint y = 0, uint z = 0) : m_size_x(x), m_size_y(y), m_size_z(z)
   {
      if(x < m_defsize_x)
         x = m_defsize_x;
      if(y < m_defsize_y)
         y = m_defsize_y;
      if(z < m_defsize_z)
         z = m_defsize_z;
 
      m_ptr = new T**[x];
      for(uint i = 0; i < x; ++i)
      {
         m_ptr[i] = new T*[y];
 
         for(uint j = 0; j < y; ++j)
            m_ptr[i][j] = new T[z];
      }
   }
Так вот часть с проверкой размеров мне почему-то не нравится, интуитивно чувствую, что данную задумку можно реализовать красивее что ли
Может вообще не такого типа проверку делать, а всегда резервировать большее количество памяти. В общем готов выслушать ваши предложения...

Не по теме:

зы. Естественно задача не боевая, а просто ради интересу и новых знаний.

0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2010, 17:53
Ответы с готовыми решениями:

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

Ошибка с выделением памяти
выдает ошибку в выделении памяти. никто не подскажет почему? если что -задача звучит так примерно вводим веественные числа пока не...

Проблемы с выделением памяти
Здравствуйте. Есть контейнер QList &lt;Node *&gt; В Node свой QList &lt;Node *&gt;. Строю программное дерево разбора выражение. На небольших...

1
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
30.05.2010, 19:09  [ТС]
И все таки, как обрабатывать ошибки при выделении памяти, ведь std::auto_ptr не может использоваться для массивов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2010, 19:09
Помогаю со студенческими работами здесь

Задача на строки с выделением памяти
Добрый вечер, помогите с задачкой Выводит на экран только строки, состоящие из заданного количества слов. Возвращает количество прочих...

Работа со строками и выделением памяти
Задание написать класс строк (что-то типа String). #define MAX 100 class ascii { private: char* str; int len; ...

Ошибка в коде с выделением памяти
Не могу понять, в чем проблема? double** FuzzySet::operator&amp;&amp;(FuzzySet* _set) { int k = _set-&gt;set.size(); double** R =...

Проблема с динамическим выделением памяти
Здравствуйте, проблема в следующем после ввода -1, происходит зависание програмы. Задача: Задача на динамическое выделение памяти....

Строки с выделением динамической памяти
Привет всем! Помогите решить вот такую задачу: Ввести две строки. Определить совпадение их слов (Первое слово 1 строки сравнить с первым...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru