gpt4 book ai didi

c++ - 获取 C++ 函数的大小

转载 作者:太空狗 更新时间:2023-10-29 23:15:23 26 4
gpt4 key购买 nike

我正在阅读 this问题是因为我试图在 C++ 程序中找到函数的大小,它暗示可能有一种特定于平台的方法。我的目标平台是windows

目前我脑子里的方法是这样的:
1.获取函数指针
2. 增加指针(和计数器)直到我达到ret
的机器代码值3.计数器大小的函数?

Edit1:为了阐明我所说的“大小”是什么意思,我指的是构成函数的字节数(机器代码)。
Edit2: 有一些评论询问我为什么要这样做,或者我打算用它做什么。诚实的回答是我无意,而且我真的看不到了解函数预编译时间长度的好处。 (虽然我确定有一些)

这对我来说似乎是一种有效的方法,它会起作用吗?

最佳答案

哇,我一直在使用函数大小计数,它有很多很多用途。可靠吗?不可能。它是标准的c++吗?不可能。但这就是为什么每次发布新版本时都需要在反汇编程序中检查它以确保它有效。编译器标志可能会打乱顺序。

static void funcIwantToCount()
{
// do stuff
}
static void funcToDelimitMyOtherFunc()
{
__asm _emit 0xCC
__asm _emit 0xCC
__asm _emit 0xCC
__asm _emit 0xCC
}

int getlength( void *funcaddress )
{
int length = 0;
for(length = 0; *((UINT32 *)(&((unsigned char *)funcaddress)[length])) != 0xCCCCCCCC; ++length);
return length;
}

它似乎更适合静态函数。全局优化可以杀死它。

附言我讨厌人们问你为什么要这样做,这是不可能的,等等。请停止问这些问题。让你听起来很愚蠢。程序员经常被要求做非标准的事情,因为新产品几乎总是突破现有产品的极限。如果他们不这样做,那么您的产品可能是对已经完成的工作的翻版。无聊!!!

关于c++ - 获取 C++ 函数的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29582045/

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