请问下C++中,char*指向的内存缓冲区最多能存放多少字节?
在编译的时候我看提示是:
按理说unsigned int最大也不过就是65536嘛,但是,我用如下代码:
得到的结果是100000000呢,也就是说实际上char*指向的缓冲区大小远远不止65536字节,甚至可以到1亿字节。。
那么,请问下char*指向的缓冲区最多能存多少字节呢,一般来说,使用缓冲区存放的字节数的范围在多少比较安全呢?
我在做一个工作,就是把一个文件内容以二进制形式读取了,然后按字节,进行拷贝和修改,每次拷贝时,用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*转为LPCWSTR
char*转为LPCWSTR,在UNICODE环境下通常使用的是双字节,LPCWSTR类型是其中之一。VS2008就是UNICODE环境,而VC++6.0则是ASCI环境
CString和char[]、 char*互转
CString和char[]、 char*互转
C++中char*转换为LPCWSTR的解决方案
最近在学习C++,遇到了一个char*转换为LPCWSTR的问题,通过查找资料终于解决了,所以下面这篇文章主要介绍了C++中char*转LPCWSTR的解决方案,文中通过详细的示例代码介绍的很详细,有需要的朋友可以参考借鉴,下面来一起看看吧。
C++中CString string char* char 之间的字符转换(多种方法)
在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换,这里简单为大家介绍一下,需要的朋友可以参考下
C/C++字符串初始化:char、char*、char[]、new与常量字符串的内存模型与最佳实践
字符串是编程中的基础数据类型,其本质是以空字符结尾的字符序列。在C/C++中,字符串的不同初始化方式直接决定了数据在内存中的存储位置和访问权限,这关系到程序的内存安全与运行效率。理解内存模型是掌握字符串处理的关键,程序运行时内存通常分为代码区、数据区、堆区和栈区等。常量字符串存储在只读的代码区,而字符数组通常位于栈区,动态分配则使用堆区。从技术价值看,正确的初始化方式能避免内存泄漏、段错误和缓冲区溢出等常见问题。在实际应用场景中,根据字符串的只读需求、可修改性、生命周期和性能要求,开发者需要选择合适的方式,


