【发布时间】:2021-06-06 21:10:13
【问题描述】:
我想使用 lambda 捕获制作 C++ 程序集挂钩,但为此我需要获取 lambda capture 函数的指针。
类似这样的:
int val0 = 42;
auto lambdaCap = new auto([&]() -> int { return val0++; });
uint64_t pLambdaFn = static_cast<uint64_t>(&decltype(*lambdaCap)::operator()); // need this
我理解 lambda 函数捕获看起来像是一个带有仿函数的类的实例,但我想获取 lambda::operator() 的静态地址。在内存中,“lambdaCap”只是 lambda 中使用的变量成员的一个指针。
谢谢
【问题讨论】:
-
您可能无法将指向成员函数的指针存储在普通指针中(成员指针的大小可能比普通指针大)。
标签: c++ assembly reverse-engineering