Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > 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,651
Репутация: 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


01:32.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


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