64bit環境なのでsize_tも64bitです。

uint64_t size = 0x100000000ull;
new char[size];
とやっても同じで、
コンパイラ上定数として扱える場合には上位がカットされ、
サイズが変数やテーブル参照のような場合には正しくアロケートされるようです。

以下コンパイル結果
--------
char* data_ = new char[0x100000000];
00007FF63F38310D xor ecx,ecx
00007FF63F38310F call operator new[] (07FF63F3811E5h)
--------
char* data_ = new char[0x110000000];
00007FF66238310D mov ecx,10000000h
00007FF662383112 call operator new[] (07FF6623811E5h)
--------