Swoole Table存储内容长度疑问

新手上路,请多包涵

如下截图,Table->column配置size为18时
图片描述
Table->set设置了7个汉字+1个数字,Table->get后如下截图
图片描述
疑问:为什么设置长度是18,实际却能存入超过18呢?

阅读 2.5k
2 个回答

底层会对长度做内存对齐,大概是8字节。18字节经过对齐处理后,是24字节,也就是可以保存24字节长度的字符串

为啥要内存对齐,这要说到 CPU 架构,目前 Intel/AMDx86/x86-64,即使内存是不对齐的也没关系,而ARM平台,一旦传给CPU未对齐的指针会直接报内存总线错误,然后程序立即崩溃。所以是为了兼容ARM平台。

也许这个长度是字符而不是字节呢

感谢韩大大的解答,涨姿势了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏