我在称为stub
的名称空间中有几个函数。 我必须确定命名空间和结束地址的确切起始地址,至少是内存中命名空间的大小(将这些函数复制到另一个进程中)。 虽然这在Visual C++ 2008完美地工作通过在命名空间的末尾添加一个确定内存中函数/存根/名称空间的大小
void stub_end() { }
和使用
size_t size = reinterpret_cast<ULONG_PTR>(stub_end) - reinterpret_cast<ULONG_PTR>(stub_start);
确定存根的大小。
这样做是因为Visual C++保存了函数顺序,因为它在.cpp文件中,但是在Visual C++ 2010中似乎不再是这种情况。
如何通过使用编译指示,编译器/链接器设施或类似命令来查找函数或整个命名空间/存根的大小?
命名空间并不意味着所包含的类型和函数的存储空间,它们是一个语法工具。 – 2009-12-23 15:20:31
我知道,但基本上问题是关于任何种类的函数(给定第一个和最后一个函数,其中最后一个函数也可能是空的,如示例中所示) – 2009-12-23 15:21:18
编译器不必订购代码按照声明的顺序,一旦启用优化,肯定不会。 – 2009-12-23 15:28:46