Это просто из любопытства.
Например, допустим, мы израсходовали 2 из 8 байтов памяти:
[xx------]
Если я вызываю new / malloc, запрашивая 3байт, он должен работать просто отлично, возможно, вот так:
[xx--xxx-]
Что произойдет, если я вызову new / malloc, запрашивая еще 3 байта?С точки зрения доступной памяти, есть еще 3 свободных байта, даже если они не являются смежными.Будет ли программа «дефрагментировать» память, чтобы освободить место для нового выделения?Звучит невозможно, так как я все еще держусь за ссылки на существующие ресурсы.
Если это так, то в крайнем случае, если ваша память как-то заканчиваетсясупер фрагментированный (например, каждый второй байт выделен ala [x-x-x-x- x-x-x-x-]
), означает ли это, что я не могу выделить даже 2 байта, несмотря на 50% свободной памяти?
Не думаю, что платформа имеет значение?
Извините за расширенный вопрос, но произойдет ли это и на других языках, таких как Java / C #?