Какова производительность кучи для выделения памяти? - PullRequest
0 голосов
/ 24 июня 2019

Динамически выделяемая память поступает из стека или кучи.Я слышал, что некоторые люди говорят, что куча - это связанный список, хотя если бы это было так, казалось бы, что это будет невероятно неэффективно.Например, если вы хотите выделить большой блок памяти, возможно, вам придется просмотреть большую часть списка, прежде чем найти что-то со свободным пространством.Кроме того, со временем количество блоков с небольшим объемом свободной памяти может становиться все больше и больше.В результате заявленные значения времени выполнения для больших алгоритмов некоторых алгоритмов могут быть неверными, поскольку они часто полагаются на постоянное распределение времени.Кто-нибудь может уточнить, как они реализованы и насколько они эффективны?

1 Ответ

1 голос
/ 24 июня 2019

Кучи управляются по-разному.Вы можете найти сотни различных реализаций malloc в интернете.Затем вы можете выбрать тот, который обеспечит вам наилучшую производительность в вашем приложении.

Один из способов создать кучу - это выделять блоки только фиксированных размеров.Например, ваш менеджер кучи будет поддерживать списки блоков, скажем, 16, 32, 64, ...... байтов.Менеджер кучи просто извлекает следующий доступный блок, размер которого больше запрашиваемого размера.

...