duanhuiuw12555 2016-08-04 19:37
浏览 35

PHP为字符串分配最少8个字节

I have the following test code:

/* empty string */
$start_mem = memory_get_usage();
$s = '';
echo (memory_get_usage() - $start_mem); // 24

/* 1 */
$start_mem = memory_get_usage();
$s = '1';
echo (memory_get_usage() - $start_mem); // 24

/* 1234567 */
$start_mem = memory_get_usage();
$s = '1';
echo (memory_get_usage() - $start_mem); // 24

/* 12345678 */
$start_mem = memory_get_usage();
$s = '12345678';
echo (memory_get_usage() - $start_mem); // 32

/* 123456789012345 */
$start_mem = memory_get_usage();
$s = '123456789012345';
echo (memory_get_usage() - $start_mem); // 32

/* 1234567890123456 */
$start_mem = memory_get_usage();
$s = '1234567890123456';
echo (memory_get_usage() - $start_mem); // 40
Windows 7 x64
PHP 7.0.2 x86

Does this mean that PHP is allocating a minimum of 8 bytes of memory to a string variable regardless of its size? (1 byte denoting a string)

I believe the 24 for $s = ''; is due to the assignment of a hash?

Is this by design or is it just how the C-code works under the hood?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥60 求一个简单的网页(标签-安全|关键词-上传)
    • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
    • ¥15 基于卷积神经网络的声纹识别
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 CSAPPattacklab
    • ¥15 一直显示正在等待HID—ISP