请教下C++中,char*指向的内存缓冲区最多能存放多少字节

请问下C++中,char*指向的内存缓冲区最多能存放多少字节?
在编译的时候我看提示是:
 char* ch = new char [unsigned int]


按理说unsigned int最大也不过就是65536嘛,但是,我用如下代码:
long long size = 100000000;
char* ch = new char[static_cast<unsigned int>(size + 1)];
memset(ch, 0, size + 1);
memset(ch, 1, size);
string str = ch;
cout << str.length();

得到的结果是100000000呢,也就是说实际上char*指向的缓冲区大小远远不止65536字节,甚至可以到1亿字节。。

那么,请问下char*指向的缓冲区最多能存多少字节呢,一般来说,使用缓冲区存放的字节数的范围在多少比较安全呢?
我在做一个工作,就是把一个文件内容以二进制形式读取了,然后按字节,进行拷贝和修改,每次拷贝时,用char*来做缓冲区,我想知道这个缓冲区究竟能存多大,一次搬运多大才能使程序比较安全呢?
------解决方案--------------------
我的例子是提醒你读写文件将缓冲区开的和磁盘簇大小即可。
char *指向的缓冲区最大值:
16位系统:2的15次方
32位系统:2的31次方
64位系统:2的63次方