Jam*_*332 2 c++ memory function-pointers sizeof
最近我在查看 gl3w 库的 src 代码。我注意到它为我使用了一种新型结构:a union. 我发现 aunion是多种数据类型存在于同一个地方的一种方式。但是我注意到它在类型之间切换而不重新分配值。它从纯 c 函数指针数组和具有不同参数数量的函数指针结构切换。所以我做了一些测试:
#include <iostream>
typedef void (*PUREPROC)();
typedef void (*ARGSPROC)(int, int *);
int main() {
std::cout << "PUREPROC's size is: " << sizeof(PUREPROC) << std::endl;
std::cout << "ARGSPROC's size is: " << sizeof(ARGSPROC) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,两者都使用了 8 个字节的内存。我理解 gl3w 如何能够在数组和结构之间切换,它们使用相同数量的内存。数组只是一个工具,允许以更简单的方式分配功能。我知道代码有效并理解它们不会消耗不同数量的内存,但我不知道为什么。所以这就是我的问题:为什么函数指针参数不影响内存大小?