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?