malloc () не позволяет запрашивать адреса в определенном диапазоне. Как описано в некоторых других ответах, если это всего лишь тест, вы можете просто продолжать вызывать malloc () для получения все большего объема памяти, пока не получите ответ, который вам нравится, но это довольно расточительно.
Используйте mmap (). Если вы звоните как:
mmap (ADDRESS_ABOVE_4GB, размер, PROT_READ | PROT_WRITE, MAP_ANONYMOUS, -1, 0)
он даст вам то, что вы хотите, с почти такой же семантикой, что и malloc ().
Если вы пытаетесь заставить это произойти для вызовов malloc () в коде, который вы не контролируете / не имеете исходного кода, например код библиотеки, да, вам придется предоставить собственную реализацию malloc () это делает выше.