我在完成家庭作业时遇到了一些麻烦。我已经进行了大量的研究,但已经陷入困境。作业如下:
开发并实现一个显示不同的示例 根据他们的分配语言实现的变量类型 通过与左值结合的时刻进行分类。
我研究了不同的类型,并得出以下结论:
根据与左值的绑定时刻,变量可分为4种类型。
- 静态:内存在运行时分配,变量在整个程序执行期间在内存中持续
- 自动(或半静态):在加载变量的作用域时分配内存,在离开作用域时取消分配。
- 动态:仅在执行期间需要时分配内存。 (我认为这意味着而不是在例如 函数调用,它在实际变量声明时分配 跑)。需要时,内存将被释放。指针是我的一个例子 发现了这个。
- 半动态:我还没有找到明确的定义,但我看到的一个例子是大小在运行时才知道的数组。
我在Pascal中有每个示例,但我为此作业指定的语言是Python。我找不到Python使用的分配类型。我已经看到here Python使用动态分配,但我不确定这是否真的是动态的(由垃圾收集器管理的手动解除分配)或自动(因为程序员不必手动执行此操作)。我也不确定类属性,全局变量和常量之类的东西是静态的,还是它们的工作方式与其他变量(自动/动态)相同。
有关python使用的内存类型的任何见解,甚至我对每种类型的定义的审查都将非常感激。如上所述,我已经研究了这个,但我发现要么不清楚(对我来说)或者编程特定问题(即如何在Python中手动分配/释放内存)而不是上面提到的Python使用的类型。
答案 0 :(得分:2)
我做了一些研究,但是在Python中找不到静态内存分配的参考,或者更确切地说是 CPython :似乎Python语言没有指定内存管理的大多数方面,保持灵活性,以便其实施决定。
我相信所有CPython的内存管理都是"动态的"因为它的运行时管理私有堆(需要时)为对象分配内存(正如我在之前的评论中所说,几乎一切都是Python中的对象!)
虽然与您的问题没有直接关系,但可以输入"键入"在CPython中分配,例如使用typed array type。
现在,PyPy是一个不同的野兽。它使用RPython作为运行时解释器,它似乎在内存分配方面做得更好,比如分析user defined classes are used的方式。
现在我不确定是否将其归类为自动分配,但这可能是您报告中要讨论的内容!