Jansen
  • 1
  • 新人请关照

Swoole Table存储内容长度疑问

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

阅读 339
评论 2019-05-25 提问
    2 个回答

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

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

    评论 赞赏 2019-06-05
      宇润
      • 687

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

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

      评论 赞赏 2019-06-05
        撰写回答

        登录后参与交流、获取后续更新提醒