Для чего мне нужно использовать VirtualAlloc / VirtualAllocEx?

Для чего мне нужно использовать VirtualAlloc / VirtualAllocEx?

Пример, один случай, который я обнаружил - если я выделил 4 ГБ виртуальной памяти, то, если я не использую все из них, то я не трачу физическую память, и если я изменяю размер своего массива, яне нужно делать новые выделения и копировать старые данные в новый массив.

struct T_custom_allocator; // which using VirtualAllocEx()
std::vector<int, T_custom_allocator> vec;
vec.reserve(4*1024*1024*1024);  // allocated virtual memory (physical memory is not used)
vec.resize(16384); // allocated 16KB of physical memory
// ...
vec.resize(32768); // allocated 32KB of physical memory 
                   // (no need to copy of first 16 KB of data)

И если бы я использовал стандартный распределитель, янеобходимо скопировать данные когда я изменяю размер:

std::vector<int> vec;
vec.resize(16384); // allocated 16KB of physical memory
// ...
vec.resize(32768); // allocated 32KB of physical memory 
                   // and need to copy of first 16 KB of data

Или со стандартным распределителем, ядолжен потратить 4 ГБ физической памяти:

std::vector<int> vec;
vec.reserve(4*1024*1024*1024);  // allocated 4GB of physical memory
vec.resize(16384); // no need to do, except changing a local variable of size
// ...
vec.resize(32768); // no need to do, except changing a local variable of size

Но почему это лучше, чем realloc ()?http://www.cplusplus.com/reference/cstdlib/realloc/

И есть ли еще случаи использования VirtualAlloc [Ex] с преимуществами?

Ответы на вопрос(2)

Ваш ответ на вопрос