#управление_памятью — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #управление_памятью, aggregated by home.social.
-
Как правильно управлять диалогами в QML: Singleton + JavaScript Promise
Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.
https://habr.com/ru/articles/1032896/
#Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью
-
Как правильно управлять диалогами в QML: Singleton + JavaScript Promise
Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.
https://habr.com/ru/articles/1032896/
#Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью
-
Как правильно управлять диалогами в QML: Singleton + JavaScript Promise
Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.
https://habr.com/ru/articles/1032896/
#Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью
-
Как правильно управлять диалогами в QML: Singleton + JavaScript Promise
Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами. QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат. Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередного экрана приложения. Да, так можно поступить, но у этого подхода есть несколько проблем. Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно. Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться. Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны. Всё становится ещё хуже, если один и тот же диалог нужен в нескольких местах. В большинстве случаев люди либо не парятся, либо им просто некогда — и в итоге мы видим обычную копипасту тут и там.
https://habr.com/ru/articles/1032896/
#Qt #QML #диалоги #Singleton #JavaScript_Promise #QtQuickControls #Dialog #динамические_компоненты #createObject #управление_памятью
-
Когда на Rust уже всё переписали
Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.
https://habr.com/ru/articles/1022260/
#zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto
-
Когда на Rust уже всё переписали
Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.
https://habr.com/ru/articles/1022260/
#zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto
-
Когда на Rust уже всё переписали
Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.
https://habr.com/ru/articles/1022260/
#zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto
-
Когда на Rust уже всё переписали
Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком. Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile. Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор. В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта.
https://habr.com/ru/articles/1022260/
#zig #rust #c #системное_программирование #управление_памятью #аллокаторы #epoll #comptime #telegram #mtproto
-
Принципы DOD в C++: Часть 1. Оптимизация структур
Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.
https://habr.com/ru/articles/1002408/
#Профилирование #DOD #C++ #Управление_памятью #alignment #padding
-
Принципы DOD в C++: Часть 1. Оптимизация структур
Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.
https://habr.com/ru/articles/1002408/
#Профилирование #DOD #C++ #Управление_памятью #alignment #padding
-
Принципы DOD в C++: Часть 1. Оптимизация структур
Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.
https://habr.com/ru/articles/1002408/
#Профилирование #DOD #C++ #Управление_памятью #alignment #padding
-
Принципы DOD в C++: Часть 1. Оптимизация структур
Приветствую всех, кто хочет делать свой код быстрым и оптимальным. В этой статье мы расссмотрим один из способов, как можно просто и легко оптимизировать программу на C++ при работе со структурами/классами, почти не меняя код.
https://habr.com/ru/articles/1002408/
#Профилирование #DOD #C++ #Управление_памятью #alignment #padding
-
Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти
Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.
https://habr.com/ru/companies/otus/articles/988860/
#rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки
-
Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти
Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.
https://habr.com/ru/companies/otus/articles/988860/
#rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки
-
Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти
Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.
https://habr.com/ru/companies/otus/articles/988860/
#rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки
-
Unsafe Rust для FFI: безопасные обёртки над C-библиотеками без утечек памяти
Rust хорош своей безопасностью, но рано или поздно приходится выйти за пределы уютного мирка borrow checker. Нужно подключить проверенную C-библиотеку, использовать системный API или просто переиспользовать существующий код. И тут начинается unsafe. Правильно приготовленный unsafe позволяет создать безопасный API поверх небезопасного кода, сохранив все гарантии Rust для пользователей библиотеки. Разберём, как писать FFI-обёртки, которые не подтекают и не падают.
https://habr.com/ru/companies/otus/articles/988860/
#rust #FFI #безопасные_обертки #указатели #управление_памятью #коллбэки
-
Кастомные аллокаторы для игровых движков: arena, pool и slab на C++
Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию
https://habr.com/ru/companies/otus/articles/988086/
#C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность
-
Кастомные аллокаторы для игровых движков: arena, pool и slab на C++
Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию
https://habr.com/ru/companies/otus/articles/988086/
#C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность
-
Кастомные аллокаторы для игровых движков: arena, pool и slab на C++
Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию
https://habr.com/ru/companies/otus/articles/988086/
#C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность
-
Кастомные аллокаторы для игровых движков: arena, pool и slab на C++
Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах. Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут. Смотреть реализацию
https://habr.com/ru/companies/otus/articles/988086/
#C++ #кастомные_аллокаторы #управление_памятью #malloc #фрагментация_памяти #локальность_кэша #многопоточность
-
Гарантии языка программирования как основа безопасной разработки программного обеспечения
Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.
https://habr.com/ru/articles/964816/
#программирование #безопасность #управление_памятью #с++ #rust
-
Гарантии языка программирования как основа безопасной разработки программного обеспечения
Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.
https://habr.com/ru/articles/964816/
#программирование #безопасность #управление_памятью #с++ #rust
-
Гарантии языка программирования как основа безопасной разработки программного обеспечения
Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.
https://habr.com/ru/articles/964816/
#программирование #безопасность #управление_памятью #с++ #rust
-
Гарантии языка программирования как основа безопасной разработки программного обеспечения
Ошибки при составлении программ для ЭВМ появились даже раньше, чем были придуманы самые первые языки программирования. Собственно, языки программирования и были придуманы как раз для того, чтобы программы писались проще, а количество ошибок в них было как можно меньше. Для уменьшения количества ошибок было разработано множество методов, включая создание специализированных инструментов анализа исходного кода и целых языков программирования. Но по прошествии многих десятилетий проблема чисто технических ошибок в программном обеспечении так и остаётся нерешённой по сей день, однако подход, предложенный в языке Rust, меняет всё.
https://habr.com/ru/articles/964816/
#программирование #безопасность #управление_памятью #с++ #rust
-
Stack Inspector: мониторинг стека в iOS и macOS
Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.
-
Stack Inspector: мониторинг стека в iOS и macOS
Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.
-
Stack Inspector: мониторинг стека в iOS и macOS
Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.
-
Stack Inspector: мониторинг стека в iOS и macOS
Сколько реально занимает стек в вашем iOS/macOS-приложении? Давайте разберёмся, как в рантайме: контролировать использование стека, предотвращать stack overflow, безопасно оптимизировать рекурсию и работу фоновых потоков.
-
Move-only типы и ключевое слово move в Swift
Привет, Хабр! Сегодня рассмотрим интересную вещь из из стека Swift 6 – move-only типы, ключевое слово move и всё, что с ними связано.
https://habr.com/ru/companies/otus/articles/933034/
#swift #управление_памятью #перемещение_значений #владение_объектами #moveonly_типы #consuming #безопасность_типов #оптимизация_Swift
-
Move-only типы и ключевое слово move в Swift
Привет, Хабр! Сегодня рассмотрим интересную вещь из из стека Swift 6 – move-only типы, ключевое слово move и всё, что с ними связано.
https://habr.com/ru/companies/otus/articles/933034/
#swift #управление_памятью #перемещение_значений #владение_объектами #moveonly_типы #consuming #безопасность_типов #оптимизация_Swift
-
Move-only типы и ключевое слово move в Swift
Привет, Хабр! Сегодня рассмотрим интересную вещь из из стека Swift 6 – move-only типы, ключевое слово move и всё, что с ними связано.
https://habr.com/ru/companies/otus/articles/933034/
#swift #управление_памятью #перемещение_значений #владение_объектами #moveonly_типы #consuming #безопасность_типов #оптимизация_Swift
-
Move-only типы и ключевое слово move в Swift
Привет, Хабр! Сегодня рассмотрим интересную вещь из из стека Swift 6 – move-only типы, ключевое слово move и всё, что с ними связано.
https://habr.com/ru/companies/otus/articles/933034/
#swift #управление_памятью #перемещение_значений #владение_объектами #moveonly_типы #consuming #безопасность_типов #оптимизация_Swift
-
Rust: как не утечь в Rc<RefCell
Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .
-
Rust: как не утечь в Rc<RefCell
Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .
-
Rust: как не утечь в Rc<RefCell
Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .
-
Rust: как не утечь в Rc<RefCell
Привет, Хабр! Сегодня рассмотрим проблемную тему в Rust: управление владением в структурах с циклическими ссылками, таких как графы и деревья. Особое внимание уделим комбинации Rc<RefCell<T>> и тому, как избежать зацикливания с помощью Weak .
-
Golang: когда make, когда new
Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.
https://habr.com/ru/companies/otus/articles/903144/
#golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью
-
Golang: когда make, когда new
Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.
https://habr.com/ru/companies/otus/articles/903144/
#golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью
-
Golang: когда make, когда new
Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.
https://habr.com/ru/companies/otus/articles/903144/
#golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью
-
Golang: когда make, когда new
Привет, Хабр! В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new , чем они отличаются, как они работают и когда выбирать каждый из них.
https://habr.com/ru/companies/otus/articles/903144/
#golang #аллокация_памяти #указатели #структурные_типы #genericкод #управление_памятью
-
[Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ
Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.
https://habr.com/ru/companies/otus/articles/902724/
#c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании
-
[Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ
Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.
https://habr.com/ru/companies/otus/articles/902724/
#c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании
-
[Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ
Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.
https://habr.com/ru/companies/otus/articles/902724/
#c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании
-
[Перевод] Линус Торвальдс: Критика C++ — Комплексный анализ
Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.
https://habr.com/ru/companies/otus/articles/902724/
#c++ #linux #Линус_Торвальдс #ядро_Linux #исключения_в_c++ #RAII #управление_памятью #ооп #абстракции_в_программировании
-
16 байт вместо 32: управляем layout'ом в C++
Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.
-
16 байт вместо 32: управляем layout'ом в C++
Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.
-
16 байт вместо 32: управляем layout'ом в C++
Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.
-
16 байт вместо 32: управляем layout'ом в C++
Привет, Хабр! Если вы пишете код для систем с ограниченными ресурсами, или просто хотите держать в голове не только логическую, но и физическую модель своей программы — вам необходимо понимать, как именно компилятор размещает данные в памяти.
-
Как управлять памятью в 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>.
https://habr.com/ru/companies/otus/articles/897264/
#С# #управление_памятью #ручное_управление_памятью #байтовые_смещения #бинарная_сериализация
-
Как управлять памятью в 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>.
https://habr.com/ru/companies/otus/articles/897264/
#С# #управление_памятью #ручное_управление_памятью #байтовые_смещения #бинарная_сериализация