50 мегабайт не слишком много по сегодняшним меркам.
Вы можете выделить его в начале вашей программы, используя новый оператор C ++, и освободить его с помощью delete [] в конце (или в начале / конце определенного раздела программы).
Если этот массив представляет, например, какой-то файл, который нужно загрузить, лучше, конечно, выделить его, когда файл загружен в память. Оптимально, вы можете отобразить только часть файла в памяти (например, 1 МБ, 2 МБ или другой логический «блок», который вы хотите использовать) (см. MapViewOfFile в Windows и mmap в системах UNIX). Таким образом, вы можете загружать очень большие файлы, не исчерпывая свою виртуальную память.