存储在内存中的结构内部的函数在哪里?
Where are the functions inside of structs stored in memory?
假设我有这样的结构:
struct 64BitStruct
{
uint64_t value;
void SomeFunction(bool enable);
bool SomeOtherFunction();
};
sizeof(64BitStruct)
returns8
个字节,也就是64位。我假设那些 64 位是结构中的 value
变量,但是函数存储在哪里?
成员函数是所有结构体对象的通用函数。因此它们与对象分开存储。您的示例中结构的大小实际上是其数据成员的大小。如果结构具有虚函数,则它隐式包含指向虚函数指针 table 的指针作为每个结构类型对象的数据成员。
假设我有这样的结构:
struct 64BitStruct
{
uint64_t value;
void SomeFunction(bool enable);
bool SomeOtherFunction();
};
sizeof(64BitStruct)
returns8
个字节,也就是64位。我假设那些 64 位是结构中的 value
变量,但是函数存储在哪里?
成员函数是所有结构体对象的通用函数。因此它们与对象分开存储。您的示例中结构的大小实际上是其数据成员的大小。如果结构具有虚函数,则它隐式包含指向虚函数指针 table 的指针作为每个结构类型对象的数据成员。