gpt4 book ai didi

python - python和c中的内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 00:31:10 24 4
gpt4 key购买 nike

我正在看SO中的一个问题,并查看了问题。

Why id function behaves differently with integer and float?

我尝试在 python 中为 a 和 b 获得相同的 id。但是当我在 c 上尝试同样的方法时,

main()
{
int a=4,b;
b=2+2;
printf("%p\n",&a);
printf("%p",&b);
}

但这打印了不同的值。为什么不同?

最佳答案

等效的 Python 代码的工作原因在您链接的问题的几个答案中给出 - Python(或者至少是 CPython)恰好缓存了一些小整数值 - 其中有 4 个,因此每个 Python 整数对象等于 4 将是同一个对象,因此具有相同的 id

在 C 中,整数是可变的,因此编译器无法执行这种优化 - 如果您递增 a,您不会期望 b 发生变化 如果 Python整数是可变的,在等效代码中 abid 同样会不同。

在实现层面,int 对 C 的意义与对 Python 的意义不同——即使它们恰好在程序中服务于相同的目的。

关于python - python和c中的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15997078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com