Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 15.04.2017, 09:01   #1
zefir2к17
 
Регистрация: 15.04.2017
Сообщений: 5
Репутация: 10
По умолчанию один кастомный аллокатор памяти для потомков класса, как?

здравствуйте, у меня есть класс Shape
и от него может быть унаследовано множество других классов
например
Point
Box
Circle
Triangle

как можно для всех этих потомков, написать один аллокатор памяти на всех, чтобы они лежали в памяти рядом друг за другом ?
zefir2к17 вне форума   Ответить с цитированием
Старый 15.04.2017, 10:08   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,582
Репутация: 1780
По умолчанию

Напишите operator new в родительском классе Shape, тогда будет вызываться для всех наследников. Не забудьте так же operator delete.
waleri вне форума   Ответить с цитированием
Старый 15.04.2017, 12:00   #3
zefir2к17
 
Регистрация: 15.04.2017
Сообщений: 5
Репутация: 10
По умолчанию

спасибо, нашел статью как этот new / delete делается http://www.amse.ru/courses/cpp2/2011_03_21.html

мне думается что нужно в new обернуть еще и memPool менеджер, наподобиии того что приводиться тут
https://www.codeproject.com/Articles.../C-Memory-Pool

все это для того что я очень хочу чтобы мои классы были по размещению в памяти очень дружелюбны/оптимальны к кешу процессора.

Последний раз редактировалось zefir2к17; 15.04.2017 в 12:03.
zefir2к17 вне форума   Ответить с цитированием
Старый 15.04.2017, 12:55   #4
Croessmah
Вредный кошак
Профессионал
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Адрес: г. Инза
Сообщений: 1,155
Репутация: 379
По умолчанию

Цитата:
Сообщение от zefir2к17 Посмотреть сообщение
как можно для всех этих потомков, написать один аллокатор памяти на всех, чтобы они лежали в памяти рядом друг за другом ?
Наверное, только выделение пула вида "чтобы точно хватило",
и менеджера, который бы этим пулом управлял.
Но если пула не хватит - всё полетит к какой-то бабушке.

Можете почитать это на досуге:
https://habrahabr.ru/post/274827/
https://habrahabr.ru/post/270009/
https://habrahabr.ru/post/162187/
https://habrahabr.ru/company/xakep/blog/257893/
Помнится, была на хабре еще
полезная статья на эту тему,
но не нагуглилась почему-то.
Цитата:
все это для того что я очень хочу чтобы мои классы были по размещению в памяти очень дружелюбны/оптимальны к кешу процессора.
Часто данные в классах - лишь указатели на нужные данные,
но Вам виднее что у Вас и как устроено.
Croessmah вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Gtk# - как сделать кастомный titlebar? Gilorn C# (си шарп) 0 09.10.2015 16:02
C++. Как в классе-потомке несколько раз вызвать один и тот же конструктор из базового класса? fly0f Помощь студентам 6 17.04.2012 01:49
Освобождение памяти от экземпляра класса Mixim Общие вопросы .NET 8 05.01.2011 18:27
Один экземпляр класса Лубышев Общие вопросы .NET 2 31.10.2008 21:57


20:43.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


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