Kam*_*m12 1 memory memory-layout swift
struct A {
var a:Int = 2
func f()->Int {
return 2*a
}
}
var obj = A()
obj.f()
Run Code Online (Sandbox Code Playgroud)
大小obj为8字节。如果我添加新属性,大小将会改变。没关系。
我想知道编译器如何关心函数的内存。无论struct中有没有func,大小都是一样的。但 func 也是信息,我想它也应该占用内存(也许我错了)。那么这个过程是如何进行的呢?
如果您推荐我主题名称以便我可以阅读,我将不胜感激。
谢谢
尽管就源代码f出现而言,该函数似乎嵌套在结构中A,但这并不是编译后的二进制文件中实际发生的情况。
只有一种实现f,并且它在 的所有实例之间共享A。它存储在全局程序文本中,与任何其他自由函数没有什么不同。
虽然专注于 C++,但您可以在https://en.wikipedia.org/wiki/Virtual_method_table上获得更多信息
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |