Я всегда был убежден, что нецелесообразно распределять большие блоки смежной памяти. Понятно, что вы, вероятно, столкнетесь с проблемой, если в нее вступает в действие фрагментация памяти, которая в большинстве случаев не может быть исключена (особенно в крупных проектах, предназначенных как службы или тому подобное).
Недавно я пришел через библиотеку обработки изображений ITK и понял, что они (практически) всегда выделяют данные изображения (даже 3D - которые могут быть огромными), как один непрерывный блок. Мне сказали, что это не должно быть проблемой, по крайней мере для 64-битных процессов. Однако я не вижу систематического различия между 64-битными и 32-битными процессами, кроме того, что проблемы с памятью могут задерживаться из-за большего виртуального адресного пространства.
Чтобы понять суть вопроса: интересно, какая хорошая практика при работе с большими объемами данных: просто выделите ее как один большой блок или лучше разделите на более мелкие куски для выделения?
Поскольку вопрос, конечно, скорее системный, я хотел бы ограничить его встроенным (неуправляемым, без CLR) С++, особенно под окнами. Тем не менее, я был бы также заинтересован в любых более общих комментариях - если это возможно.