Публикации по теме '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 хранит все переменные в некоторой памяти. Это может быть..