Что такое Неупорядоченное хранение памяти?

Что такое неупорядоченное хранение памяти?

149
задан H4cKL0rD 22 February 2010 в 04:15
поделиться

6 ответов

Предположительно вы имеете в виду куча с точки зрения распределения памяти, а не с точки зрения структуры данных (термин имеет несколько значений ).

Очень простое объяснение состоит в том, что куча - это часть памяти, в которой находится динамически выделяемая память (т. Е. Память, выделенная через malloc ). Память, выделенная из кучи, будет оставаться выделенной до тех пор, пока не произойдет одно из следующих событий:

  1. Память свободна 'd
  2. Программа завершается

Если все ссылки на выделенную память потеряны (например, вы больше не храните указатель на него), у вас есть так называемая утечка памяти . Здесь память все еще была выделена, но у вас больше нет простого способа получить к ней доступ. Утечка памяти не может быть восстановлена ​​для будущего выделения памяти, но когда программа завершится, память будет освобождена операционной системой.

Сравните это с памятью стека , в которой находятся локальные переменные (определенные в методе). Память, выделенная в стеке, обычно живет только до тех пор, пока функция не вернется (есть некоторые исключения из этого, например статические локальные переменные).

Дополнительную информацию о куче можно найти в этой статье .

202
ответ дан 23 November 2019 в 22:26
поделиться

Память куча - это место в памяти, где память может быть выделена при произвольном доступе.
В отличие от стека где память выделяется и освобождается в очень определенном порядке, отдельные элементы данных, выделенные на куче, обычно освобождаются асинхронно друг от друга. Любой такой элемент данных освобождается, когда программа явно освобождает соответствующий указатель, и это может привести к фрагментации кучи. В противоположном случае могут освобождаться только данные, расположенные сверху (или снизу, в зависимости от способа работы стека), в результате чего элементы данных освобождаются в обратном порядке, в котором они были выделены.

14
ответ дан 23 November 2019 в 22:26
поделиться

Куча памяти - это обычная структура для хранения динамически выделяемой памяти. См. Dynamic_memory_allocation в Википедии.

Есть и другие структуры, такие как бассейны, стопки и сваи.

9
ответ дан 23 November 2019 в 22:26
поделиться

Это фрагмент памяти, выделенный из операционной системы диспетчером памяти, используемый процессом. Вызовы malloc () и др. Затем берут память из этой кучи, вместо того, чтобы иметь дело с операционной системой напрямую.

7
ответ дан 23 November 2019 в 22:26
поделиться

Куча памяти является местоположением в памяти, где память может быть выделена при произвольном доступе.
В отличие от стека , в котором память выделяется и высвобождается в очень определенном порядке, отдельные элементы данных, выделенные в куче, обычно высвобождаются асинхронными способами. Любой такой элемент данных освобождается, когда программа явно освобождает соответствующий указатель, и это может привести к фрагментации кучи. В противоположность только данные вверху (или внизу, в зависимости от того, как работает стек) могут быть освобождены, в результате чего элемент данных освобождается в обратном порядке.

-121--2009173-

Я использую код таблицы набора результатов

Найдите в Интернете лучший пример модели таблицы набора результатов. Я уверен, что вы найдете тот, который уже реализует метод setStartAt (...). Или другой подход состоит в том, чтобы просто скопировать данные из ResultSet в модель DefureTaureModel, а затем можно будет редактировать их без проблем.

Если вы не можете предоставить мне что-то, что легко сортирует обычные JTables.

Прочитали ли вы API JTable и перешли по ссылке на руководство Swing по использованию таблиц, которое содержит рабочий пример сортировки, поскольку сортировка является частью JDK по умолчанию.

-121--1948952-

Вероятно, вы имеете в виду кучу памяти, а не кучу памяти.

Кучная память - это по существу большой пул памяти (обычно на процесс), из которого выполняемая программа может запрашивать порции. Обычно это называется динамическим распределением .

Он отличается от стека, где выделяются «автоматические переменные». Так, например, при определении в функции C переменной указателя в стеке выделяется достаточно места для хранения адреса памяти. Однако часто необходимо динамически распределять пространство (With malloc) в куче, а затем указывать адрес, где этот блок памяти начинается с указателя.

7
ответ дан 23 November 2019 в 22:26
поделиться

Куча - это просто область, в которой память выделяется или освобождается без какого-либо порядка. Это происходит, когда объект создается с помощью оператора new или чего-то подобного. Это противоположно стеку, в котором память освобождается по принципу «первым пришел последний ушел».

7
ответ дан 23 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: