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

Fairchild_X Fairchild_X 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在编译的时候我看提示是:
 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环境

xiao_hong1987

CString和char[]、 char*互转

CString和char[]、 char*互转

大红番茄

C++中char*转换为LPCWSTR的解决方案

最近在学习C++,遇到了一个char*转换为LPCWSTR的问题,通过查找资料终于解决了,所以下面这篇文章主要介绍了C++中char*转LPCWSTR的解决方案,文中通过详细的示例代码介绍的很详细,有需要的朋友可以参考借鉴,下面来一起看看吧。

weixin_38529951

C++中CString string char* char 之间的字符转换(多种方法)

在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换,这里简单为大家介绍一下,需要的朋友可以参考下

weixin_38641339

C/C++字符串初始化:char、char*、char[]、new与常量字符串的内存模型与最佳实践

字符串是编程中的基础数据类型,其本质是以空字符结尾的字符序列。在C/C++中,字符串的不同初始化方式直接决定了数据在内存中的存储位置和访问权限,这关系到程序的内存安全与运行效率。理解内存模型是掌握字符串处理的关键,程序运行时内存通常分为代码区、数据区、堆区和栈区等。常量字符串存储在只读的代码区,而字符数组通常位于栈区,动态分配则使用堆区。从技术价值看,正确的初始化方式能避免内存泄漏、段错误和缓冲区溢出等常见问题。在实际应用场景中,根据字符串的只读需求、可修改性、生命周期和性能要求,开发者需要选择合适的方式,

weixin_30896825
评论 11
收藏 已收藏
分享
返回顶部
Fairchild_X
C++ 语言 65,214 成员 250,514 内容