gpt4 book ai didi

c# - 是否为对象的功能和属性分配了单独的内存?

转载 作者:行者123 更新时间:2023-11-30 13:15:00 24 4
gpt4 key购买 nike

这个问题是关于 .NET 的,但我认为它普遍适用。当一个新对象被实例化时,该对象中的函数是否也分配了内存?即使他们直到稍后才被调用?

换句话说,如果两个成员变量相同但内部方法较多的类在实例化时会占用更多内存吗?

最佳答案

对象 instance 表示您分配的实例的状态。因此它包含您在相应类型 中定义的所有字段和属性的副本。

您为给定类型定义的方法保留在实例本身之外的另一个数据结构中,称为方法表。您分配的每个实例内部都有一个指针指向其类型的方法表

enter image description here

当您在该方法上调用一个函数时,它会将其指针移动必要数量的地址,拉取该函数,将内存中可用的所有参数压入堆栈,然后调用该函数。

更多信息可以在这里阅读:Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects

关于c# - 是否为对象的功能和属性分配了单独的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17716420/

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