home.social

#управление_памятью — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #управление_памятью, aggregated by home.social.

  1. Как правильно управлять диалогами в QML: Singleton + JavaScript Promise

    Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.

    habr.com/ru/articles/1032896/

    #Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью

  2. Как правильно управлять диалогами в QML: Singleton + JavaScript Promise

    Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.

    habr.com/ru/articles/1032896/

    #Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью

  3. Как правильно управлять диалогами в QML: Singleton + JavaScript Promise

    Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.

    habr.com/ru/articles/1032896/

    #Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью

  4. Как правильно управлять диалогами в QML: Singleton + JavaScript Promise

    Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.

    habr.com/ru/articles/1032896/

    #Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью

  5. Когда на Rust уже всё переписали

    Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.

    habr.com/ru/articles/1022260/

    #zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto

  6. Когда на Rust уже всё переписали

    Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.

    habr.com/ru/articles/1022260/

    #zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto

  7. Когда на Rust уже всё переписали

    Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.

    habr.com/ru/articles/1022260/

    #zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto

  8. Когда на Rust уже всё переписали

    Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.

    habr.com/ru/articles/1022260/

    #zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto

  9. Принципы DOD в C++: Часть 1. Оптимизация структур

    Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.

    habr.com/ru/articles/1002408/

    #Профилирование #DOD #C++ #Управление_памятью #alignment #padding

  10. Принципы DOD в C++: Часть 1. Оптимизация структур

    Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.

    habr.com/ru/articles/1002408/

    #Профилирование #DOD #C++ #Управление_памятью #alignment #padding

  11. Принципы DOD в C++: Часть 1. Оптимизация структур

    Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.

    habr.com/ru/articles/1002408/

    #Профилирование #DOD #C++ #Управление_памятью #alignment #padding

  12. Принципы DOD в C++: Часть 1. Оптимизация структур

    Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.

    habr.com/ru/articles/1002408/

    #Профилирование #DOD #C++ #Управление_памятью #alignment #padding

  13. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  14. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  15. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  16. Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти

    Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.

    habr.com/ru/companies/otus/art

    #rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки

  17. Кастомные аллокаторы для игровых движков: arena, pool и slab на C++

    Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию

    habr.com/ru/companies/otus/art

    #C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность

  18. Кастомные аллокаторы для игровых движков: arena, pool и slab на C++

    Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию

    habr.com/ru/companies/otus/art

    #C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность

  19. Кастомные аллокаторы для игровых движков: arena, pool и slab на C++

    Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию

    habr.com/ru/companies/otus/art

    #C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность

  20. Кастомные аллокаторы для игровых движков: arena, pool и slab на C++

    Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию

    habr.com/ru/companies/otus/art

    #C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность

  21. Гарантии языка программирования как основа безопасной разработки программного обеспечения

    Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.

    habr.com/ru/articles/964816/

    #программирование #безопасность #управление_памятью #с++ #rust

  22. Гарантии языка программирования как основа безопасной разработки программного обеспечения

    Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.

    habr.com/ru/articles/964816/

    #программирование #безопасность #управление_памятью #с++ #rust

  23. Гарантии языка программирования как основа безопасной разработки программного обеспечения

    Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.

    habr.com/ru/articles/964816/

    #программирование #безопасность #управление_памятью #с++ #rust

  24. Гарантии языка программирования как основа безопасной разработки программного обеспечения

    Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.

    habr.com/ru/articles/964816/

    #программирование #безопасность #управление_памятью #с++ #rust

  25. Stack Inspector: мониторинг стека в iOS и macOS

    Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.

    habr.com/ru/articles/941586/

    #iOS #macOS #Stack #управление_памятью

  26. Stack Inspector: мониторинг стека в iOS и macOS

    Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.

    habr.com/ru/articles/941586/

    #iOS #macOS #Stack #управление_памятью

  27. Stack Inspector: мониторинг стека в iOS и macOS

    Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.

    habr.com/ru/articles/941586/

    #iOS #macOS #Stack #управление_памятью

  28. Stack Inspector: мониторинг стека в iOS и macOS

    Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.

    habr.com/ru/articles/941586/

    #iOS #macOS #Stack #управление_памятью

  29. Move-only типы и ключевое слово move в Swift

    Привет, Хабр! Сегодня рассмотрим интересную вещь из из стека Swift 6 – move-only типы, ключевое слово move и всё, что с ними связано.

    habr.com/ru/companies/otus/art

    #swift #управление_памятью #перемещение_значений #владение_объектами #moveonly_типы #consuming #безопасность_типов #оптимизация_Swift

  30. Rust: как не утечь в Rc<RefCell

    Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .

    habr.com/ru/companies/otus/art

    #rust #rc #RefCell #Weak #управление_памятью

  31. Rust: как не утечь в Rc<RefCell

    Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .

    habr.com/ru/companies/otus/art

    #rust #rc #RefCell #Weak #управление_памятью

  32. Rust: как не утечь в Rc<RefCell

    Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .

    habr.com/ru/companies/otus/art

    #rust #rc #RefCell #Weak #управление_памятью

  33. Rust: как не утечь в Rc<RefCell

    Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .

    habr.com/ru/companies/otus/art

    #rust #rc #RefCell #Weak #управление_памятью

  34. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  35. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  36. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  37. Golang: когда make, когда new

    Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.

    habr.com/ru/companies/otus/art

    #golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью

  38. [Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ

    Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

    habr.com/ru/companies/otus/art

    #c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании

  39. [Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ

    Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

    habr.com/ru/companies/otus/art

    #c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании

  40. [Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ

    Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

    habr.com/ru/companies/otus/art

    #c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании

  41. [Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ

    Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

    habr.com/ru/companies/otus/art

    #c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании

  42. 16 байт вместо 32: управляем layout'ом в C++

    Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.

    habr.com/ru/companies/otus/art

    #C++ #layout #управление_памятью

  43. 16 байт вместо 32: управляем layout'ом в C++

    Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.

    habr.com/ru/companies/otus/art

    #C++ #layout #управление_памятью

  44. 16 байт вместо 32: управляем layout'ом в C++

    Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.

    habr.com/ru/companies/otus/art

    #C++ #layout #управление_памятью

  45. 16 байт вместо 32: управляем layout'ом в C++

    Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.

    habr.com/ru/companies/otus/art

    #C++ #layout #управление_памятью

  46. Как управлять памятью в C#: StructLayout

    Привет, Хабр! Сегодня рассмотрим тему, которая обычно ассоциируется с C или Rust, но никак не с C#. А именно — ручное управление памятью , байтовые смещения , бинарная сериализация и прочая низкоуровневые вещи. Зачем? Допустим, в одном из проектов потребовалось прочитать старый бинарный лог от С-подобной прошивки. Формат документации был: offset 0 — 1 byte: Type; offset 1 — 2 bytes: ID; offset 3 — 4 bytes: Timestamp; и т.д. Разбирать всё это вручную с BinaryReader? Нет, спасибо. Можно воспользоваться StructLayout, FieldOffset, MemoryMappedFile, Unsafe.As<T>() и Span<byte>.

    habr.com/ru/companies/otus/art

    #С# #управление_памятью #ручное_управление_памятью #байтовые_смещения #бинарная_сериализация

  47. Как управлять памятью в C#: StructLayout

    Привет, Хабр! Сегодня рассмотрим тему, которая обычно ассоциируется с C или Rust, но никак не с C#. А именно — ручное управление памятью , байтовые смещения , бинарная сериализация и прочая низкоуровневые вещи. Зачем? Допустим, в одном из проектов потребовалось прочитать старый бинарный лог от С-подобной прошивки. Формат документации был: offset 0 — 1 byte: Type; offset 1 — 2 bytes: ID; offset 3 — 4 bytes: Timestamp; и т.д. Разбирать всё это вручную с BinaryReader? Нет, спасибо. Можно воспользоваться StructLayout, FieldOffset, MemoryMappedFile, Unsafe.As<T>() и Span<byte>.

    habr.com/ru/companies/otus/art

    #С# #управление_памятью #ручное_управление_памятью #байтовые_смещения #бинарная_сериализация