Публикации по теме 'memory-management'


Нарушения безопасности памяти
Как избежать проблем с памятью? Память запущенной программы Типичная структура памяти работающей программы может быть следующей: Статическая память: статический размер, статическое выделение (время компиляции), для глобальных переменных и статические локальные переменные. Память стека (стек вызовов): статический размер, динамическое выделение (время выполнения), для локальных переменных. Память кучи: динамический размер, динамическое выделение (время выполнения). Его программист..

О расположении памяти связанного списка
Одна частая проблема связанных списков заключается в том, что они могут страдать от плохой локальности памяти, потому что они не гарантируют, что они будут занимать один непрерывный блок памяти, как вектор. Это может снизить производительность программы из-за частых промахов кеша при обходе списка. Оправдано ли это беспокойство на практике? вступление Локальность памяти является важной концепцией современных высокопроизводительных вычислений из-за кэширования. Чем больше времени..

Управление памятью в Python
Управление памятью в Python отличается от других языков программирования. Если у вас есть опыт работы с C++, то это другое дело. Мой первый язык программирования — C++, поэтому я пытаюсь сравнить оба. Возьмем пример на C++ #include ‹iostream› использование пространства имен std; интервал основной () { инт а = 5; интервал б = 5; cout ‹‹”id a = “‹‹ &a ‹‹” id b = “‹‹ &b‹‹ endl; } В моем случае вывод id a = 0x7bfe1c id b = 0x7bfe18. В вашем случае все..

Все на своих местах
Часть 2 В последней статье этой серии я создал простую версию malloc/free и продемонстрировал уязвимость, связанную с переполнением кучи. В следующей статье я решил добавить бины в свою реализацию и продемонстрировать быструю атаку бинов. Что такое бин? Бункеры, также известные как свободные списки, представляют собой массивы освобожденных фрагментов памяти. Бункеры позволяют нам перераспределять участки памяти быстрее и эффективнее. В нашей предыдущей реализации необходимо было..

Распределение памяти массива в java
В Java есть несколько типов памяти, которые используются JVM (виртуальная машина Java) для управления выполнением программ Java. К ним относятся: Куча памяти: это память, в которой объекты создаются в Java. Все объекты, включая массивы, хранятся в куче памяти. Память кучи управляется сборщиком мусора, который автоматически освобождает память, когда объект больше не используется. Память стека: это память, используемая JVM для хранения вызовов методов и локальных переменных. Каждый..

Как на самом деле работает JavaScript? (Часть 2)
Как управление памятью, стек вызовов, потоки и цикл событий работают с движком JavaScript V8. В Части 1 этой статьи я дал краткий обзор того, как в целом работают языки программирования, и подробно обсудил конвейер движка V8. В этом посте будут рассмотрены еще несколько важных концепций, которые должен знать каждый программист на JavaScript и которые не связаны только с движком V8. У любого программиста есть две основные проблемы: временная сложность и пространственная сложность..

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