Andrei
Да и как мне он бы помог? У меня один фиг отлаживаемое приложение на плате. у которой из выводов только ethernet и питание :)
🦥Alex Fails
А гдб такой же, консольный?
Такой же, но студия его прозрачно юзает, поэтомк для юзера все выглядит как обычно - брякпойнты, step, stepi, и др
Pavel
чат набирает обороты =). Матвей, привет =).
Kirill
Я вот думаю, если сделать свой пул памяти для блоков любых размеров (как в книжках описывают), будет ли скорость выделения/освобождения памяти существенно больше? Ведь диспетчер памяти ОС делает примерно ту же работу, только блоков у него больше на порядок.
Bohdan
Мне кажется здесь дело не в скорости, а в стабильности. Сделав так, вы просто будете уверенны, что другие процесы каким-то чудом будет мешать вашей программе. Ну, или наоборот, что ваша программа не наделает сбоев.
Kirill
Разве ОС позволяет процессу влезать в чужое адресное пространство?
Surreal
Surreal
Vladislav
Kirill
Он fixed-size
Kirill
Про fixed-size понятно: там логика выделения/освобождения совсем другая, потому быстрее на порядки.
Surreal
Kirill
Но я имею в виду универсальный пул, который хранит линейные списки указателей на занятые свободные блоки и их размеры.
ovf
на тему взаимодействия процессов в памяти рекомендую ознакомиться с развлекательными материалами типа https://arstechnica.com/security/2017/02/new-aslr-busting-javascript-is-about-to-make-drive-by-exploits-much-nastier/
ovf
но это просто последнее, а так -- см. "cache side channel attacks", "timing attacks" и т.д.
Kirill
Даже, если можно залезть подобными способами в чужое адресное пространство, свой пул от этого никак не защитит.
Bohdan
Спасибо за информацию)
ovf
нет, не защитит. :-)
Surreal
Раз уж такая тема пошла. Где-то читал, что в clang есть механизм "сокрытия" указателя на таблицу вирт. функций (могу ошибаться, но что-то подобное). Может кто-нибудь знаком и может в 2-3х предложениях описать принцип.
Kirill
Сокрытие? Ну, он и так недоступен, если только не ориентироваться на конкретный компилятор и арифметику указателей.
Surreal
Kirill
Вроде как стандарт не определяет, где он будет храниться, (наиболее логично в начале или конце базового класса).
Surreal
В фб в hhvm, кстати, делали свою "вирт. таблицу" для горячих классов. Там, правда, это двумерный массив указателей на функции.
Surreal
Кому интересно, вот: https://clang.llvm.org/docs/ControlFlowIntegrity.html
И гуглить: vtable protection
Kirill
Нашел интересную библиотеку: http://www.pjsip.org/pjlib/docs/html/group__PJ__POOL__GROUP.htm
Vladislav
стандартный malloc обычно не используют в high load, есть же jemalloc и tcmalloc
Vladislav
Vladislav
довольно мощная штука, если правильно ей пользоваться
Anton
Pepe 🐸
Pepe 🐸
Если я правильно понял
Pepe 🐸
Ну и когда ты аллоцируешь память для массива тоже надо несколько раз делать как это в STL реализовано я не знаю правда
Anonymous
Обычно когда пишут свой аллокатор памяти исходят из того насколько часто выделяются те или иные блоки памяти. Как правило объекты небольших размеров размещаются в памяти чаще более крупных. Отсюда разный подход и алгоритмы. Блоки очень больших размеров думаю можно вообще организовать в виде линейного списка и не париться.
Evgeniy
/vzhuh@FailsBot
Denis
Ну вот в книге Александреуского была глава, где он имплементил что-то похожее
🦥Alex Fails
Danil
в stingraykit есть такая штука
Danil
на гитхабе должно быть
Danil
https://github.com/GSGroup/stingraykit/blob/master/stingraykit/toolkit.h#L97
Danil
во
Danil
и вуаля, все enum имеют строковое представление)
Vladislav
Danil
а кто-то без макросов хотел?)
Danil
я просто не читал, так подхватил тему
Danil
struct SocketOptionLevel
{
STINGRAYKIT_ENUM_VALUES(Socket, InternetProtocolV4, InternetProtocolV6);
STINGRAYKIT_DECLARE_ENUM_CLASS(SocketOptionLevel);
};
Danil
Вот так это работает
Danil
ну иногда макросы это же удобно и хорошо
Vladislav
https://github.com/rollbear/basicpp
Vladislav
🦥Alex Fails
Danil
лооооол
Крылатый
IharOK
Anonymous
xD Qbasic
🦥Alex Fails
Deleted Account
Спасибо
я бы кста хотел какой нить кодревю по этому говнокоду, потому что посути оно мапит объекты на объекты, и енум в названии это косяк, и мапы там надо делать унордеред и мног оещё всего
🦥Alex Fails
Чуть позже гляну
Deleted Account
🦥Alex Fails
Схоронил в гист. Придраться трудно. Могу только если по дизайну класса - кмк, енамы должны быть иммутабельными, и методы для изменения внутренней мапы не нужны. И я б добавил перегрузки оператора скобки для типа T и строкового типа.
Людмила
#вакансия #Москва #Краснодар
Всем привет! Нужны программисты C++ в компанию – разработчик ПО для систем видеонаблюдения. Зарплата 90-150 тыс. руб., ДМС и другие плюшки.
Москва, м. Электрозаводская, подробности по ссылке:
https://m.hh.ru/vacancy/14809894
Резюме и вопросы можно сюда: personal@dssl.ru
Также нужны разработчики C++ в Краснодар!
Всем спасибо за внимание.
cyber
чисто ради интереса, на сколько зп в 90-120 приемлема для с++ разработчиков в мск?
🦥Alex Fails
Да норм, в принципе, обычно на собеседах от 100 и начинаю
cyber
мне казалось это зп c# winphone кодера
🦥Alex Fails
да я на фулл-тайм не собеседуюсь, иначе не смогу совмещать с преподаванием
Deleted Account
Artem
как зп младшего (но не совсем зеленого) с++ разраба ок
🦥Alex Fails
Pepe 🐸
Deleted Account