Do czego muszę użyć VirtualAlloc / VirtualAllocEx?

Do czego muszę użyć VirtualAlloc / VirtualAllocEx?

Przykład, jeden przypadek, który znalazłem - jeśli przydzieliłem 4 GB pamięci wirtualnej, to jeśli nie użyję ich wszystkich, nie wydam pamięci fizycznej, a jeśli zmienię rozmiar mojej tablicy, janie musisz robić nowych alokacji i kopiowania starych danych do nowej tablicy.

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)

A jeśli użyłem standardowego alokatora, jatrzeba skopiować dane kiedy zmieniam rozmiar:

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

Lub z standatd alokatorem, Imusi wydać 4 GB pamięci fizycznej:

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

Ale dlaczego to jest lepsze niż realloc ()?http://www.cplusplus.com/reference/cstdlib/realloc/

Czy są jeszcze inne przypadki korzystania z VirtualAlloc [Ex] z korzyściami?

questionAnswers(2)

yourAnswerToTheQuestion