php字符串最大长度限制,c-std :: basic_string字符串的最大长度

我想知道如何为给定平台固定字符串长度的上限(以C表示).

我仔细检查了许多库,其中大多数库都是任意定义的. GNU C STL(具有实验性C 0x功能的STL)具有相当的定义:

size_t npos = size_t(-1); /*!< The maximum value that can be stored in a variable of type size_t */

size_t _S_max_len = ((npos - sizeof(_Rep_base))/sizeof(_CharT) - 1) / 4; /*!< Where _CharT is a template parameter; _Rep_base is a structure which encapsulates the allocated memory */

这是我对公式的理解:

> size_t类型必须保存分配给字符串的单位数(其中每个单位均为_CharT类型)

>理论上,size_t类型的变量可以采用的最大值是可以分配的1字节(即char类型)的单位总数

>因此,前一个值减去跟踪分配的内存(_Rep_base)所需的开销是字符串中最大的单元数.将此值除以sizeof(_CharT),因为_CharT可能需要一个以上的字节

>从前一个值中减去1,以得出一个终止字符

>最后,将除法除以4.我绝对不知道为什么!

我在很多地方进行了解释,但找不到任何令人满意的解释(这就是为什么我一直在努力弥补问题!如果我错了,请纠正我!).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值