【问题标题】:How python assigns unique memory address to string "sample" ? when each character is stored in different locationpython如何为字符串“sample”分配唯一的内存地址?当每个字符存储在不同的位置时
【发布时间】:2020-05-20 15:44:54
【问题描述】:

python如何为字符串“sample”分配唯一的内存地址, 因为它使用 6 个单元将 unicode 字符存储在字符串“SAMPLE”中,因为这 6 个单元指向 12 个内存地址(因为 1 个单元指向 2 个内存地址)

【问题讨论】:

    标签: python arrays python-3.x string memory-management


    【解决方案1】:

    C Python 实现将字符串包装在 C 结构中,该结构包括字符串类型、长度和指向保存字符串的内存的指针。字符串中的每个字符可以用 1 (UCS1)、2 (UCS2) 或 4 (UCS4) 字节表示。 Python 只保留第一个字符的地址和字符串的长度。然后,它可以通过对该指针的简单数学运算找到字符串中的任何字符。对于 UCS2,某些index 处的字符是pointer + (sizeof_character * index)

    【讨论】:

    • 这点我没看懂,“Python只保留第一个字符的地址和字符串的长度”,所以我们应该考虑整个字符串没有存储在内存地址中吗?在屏幕截图中,您可以看到“S”存储在 2 个内存地址 2146,2147 中,但是当您执行 id('S') 时,它只返回 1 个内存地址。同样,整个字符串“SAMPLE”是否也存储在某个内存地址中?如果是这样,它是如何存储的以及如何为其分配唯一地址
    猜你喜欢
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    相关资源
    最近更新 更多