Здравствуйте, King of a Stellar War, Вы писали:
KOA>Я так понял, что адрес переданый в VirtualAlloc и полученный после его вызова, будут совпадать, если по этому адресу возможно разместить кусок памяти указанного размера? Иначе, система найдёт другую область?
Именно так.
Но кусок памяти линейный, работать с ним не очень удобно. Потому я и вспоминал про менеджер кучи.
KOA>>>4. Как мне освобождать память выделенную в другом процессе?
W>>С этим проблема. Чтобы освободить блок, выделенный другим процессом, нужно точно знать что он больше не используется и не будет использоваться тем процессом. Для этого можно ставить маркеры в блоках, но в любом случае, насколько мне известно, — без собственного менеджера памяти (кучи) тогда не обойтись.
W>>А освобождается память, насколько я понмню — VirtualFree.
KOA>А вот тут самое интересное, у меня по VirtualFree даже в родном процессе память не освобождается (ХР), перепробовал разные варианты, но память устойчиво освобождается только после вызова CloseHandle(hFileMapping)
Память выделяется\освобождается постранично. Если вызвать VirtualFree для целой страницы — разве тоже не освобождается?
< Rsdn@Home 1.1.4 beta 1 >