Andrei
Да и как мне он бы помог? У меня один фиг отлаживаемое приложение на плате. у которой из выводов только ethernet и питание :)
🦥Alex Fails
А гдб такой же, консольный?
Такой же, но студия его прозрачно юзает, поэтомк для юзера все выглядит как обычно - брякпойнты, step, stepi, и др
Pavel
чат набирает обороты =). Матвей, привет =).
Kirill
Я вот думаю, если сделать свой пул памяти для блоков любых размеров (как в книжках описывают), будет ли скорость выделения/освобождения памяти существенно больше? Ведь диспетчер памяти ОС делает примерно ту же работу, только блоков у него больше на порядок.
Bohdan
Мне кажется здесь дело не в скорости, а в стабильности. Сделав так, вы просто будете уверенны, что другие процесы каким-то чудом будет мешать вашей программе. Ну, или наоборот, что ваша программа не наделает сбоев.
Kirill
Разве ОС позволяет процессу влезать в чужое адресное пространство?
Kirill
Он fixed-size
Kirill
Про fixed-size понятно: там логика выделения/освобождения совсем другая, потому быстрее на порядки.
Bohdan
Разве ОС позволяет процессу влезать в чужое адресное пространство?
Я не уверен. Разве не бывает намеренных попыток использовать программу с целью забить всю память?
Kirill
Но я имею в виду универсальный пул, который хранит линейные списки указателей на занятые свободные блоки и их размеры.
Bohdan
Забивайте, вам никто не мешает.
Если это возможно намеренно, значит ли это, что возможно и после какого-то сбоя программы?
Kirill
Я не уверен. Разве не бывает намеренных попыток использовать программу с целью забить всю память?
Ну, процесс может израсходовать всю свободную память, но это не значит, что он влезает в память других.
Surreal
Если это возможно намеренно, значит ли это, что возможно и после какого-то сбоя программы?
Это просто возможно. Если хотите сожрать всю доступную память, то единственный ограничитель - адресное пространство и ulimit/аналог для win.
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
Сокрытие? Ну, он и так недоступен, если только не ориентироваться на конкретный компилятор и арифметику указателей.
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
довольно мощная штука, если правильно ей пользоваться
Pepe 🐸
Pepe 🐸
Если я правильно понял
Anton
Если я правильно понял
вроде как с освобождением аналогично.
Pepe 🐸
Ну и когда ты аллоцируешь память для массива тоже надо несколько раз делать как это в STL реализовано я не знаю правда
Anonymous
Обычно когда пишут свой аллокатор памяти исходят из того насколько часто выделяются те или иные блоки памяти. Как правило объекты небольших размеров размещаются в памяти чаще более крупных. Отсюда разный подход и алгоритмы. Блоки очень больших размеров думаю можно вообще организовать в виде линейного списка и не париться.
Vladislav
Если мне не отшибает память, то скорость выделения памяти не зависит от размера аллоцируемого блока.
у регионов вся аллокация - прибавить к указателю на конец региона размер блока, а деаллокация вообще бесплатная (правда память при этом не осободится до конца жизни всего региона)
Evgeniy
/vzhuh@FailsBot
Denis
Ну вот в книге Александреуского была глава, где он имплементил что-то похожее
Deleted Account
А что ты предложишь взамен? Как мне енам представить в строковом виде?
у меня есть класс который мапит енамы на строки, стоит тока обратиться к такому объекту с енамом или строкой он возвращает замапленое знечение, ну то есть там 2 мапы
Danil
в stingraykit есть такая штука
Danil
на гитхабе должно быть
Danil
https://github.com/GSGroup/stingraykit/blob/master/stingraykit/toolkit.h#L97
Danil
во
Danil
и вуаля, все enum имеют строковое представление)
Vladislav
https://github.com/GSGroup/stingraykit/blob/master/stingraykit/toolkit.h#L97
мда, отлично заменяет макросы)
Danil
а кто-то без макросов хотел?)
Danil
я просто не читал, так подхватил тему
Danil
struct SocketOptionLevel { STINGRAYKIT_ENUM_VALUES(Socket, InternetProtocolV4, InternetProtocolV6); STINGRAYKIT_DECLARE_ENUM_CLASS(SocketOptionLevel); };
Danil
Вот так это работает
🦥Alex Fails
а кто-то без макросов хотел?)
Ну вот на менябыли поклепы, что типа макросы. Но ща без них никуда
Danil
ну иногда макросы это же удобно и хорошо
Vladislav
https://github.com/rollbear/basicpp
🦥Alex Fails
Danil
лооооол
IharOK
https://github.com/rollbear/basicpp
крутая дичь)))
Anonymous
xD Qbasic
Deleted Account
выложи на пастбин
http://pastebin.com/WZnrrzQh
🦥Alex Fails
Deleted Account
Спасибо
я бы кста хотел какой нить кодревю по этому говнокоду, потому что посути оно мапит объекты на объекты, и енум в названии это косяк, и мапы там надо делать унордеред и мног оещё всего
🦥Alex Fails
Чуть позже гляну
🦥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
cyber
это оскарбление?
не в коем случае
Deleted Account
не в коем случае
то есть c# winphone это пристижна?
Artem
как зп младшего (но не совсем зеленого) с++ разраба ок
Pepe 🐸
как зп младшего (но не совсем зеленого) с++ разраба ок
А сколько для допустим с опытом 6 лет и больше норм?