65,186
社区成员




class CTest
{
public:
int a;
int b;
int c;
// 这里还有若干个变量,且个数和占用空间是不确定的.
void *ptr;//最后有一个指针,但这个指针的变量名是不确定的.
// 同时,这个指针也不能放在最开头的位置
};
int main()
{
//定义变量:
CTest test;
test.ptr = (void *) 0x123;//测试值
//读写ptr的方法:
void **thisptr = (void**) (((DWORD)&test) + (sizeof(CTest) - sizeof(void*)));
*thisptr = (void *) 0x456;
return 1;
};
//我想问一下,这种读写方法能不能在windows下正常使用?(包括 vs2003 ~ vs2012 )
//我目前只试过在 vc6 下通过.
//或者说,有没有更好的方法?
class ILastLocation{
public void* GetLastObjPtr() = 0;
};
class LastLocationImpl:public ILastLocation{
public void* GetLastObjPtr(){
return (void*)((INT_PTR)(this+1)-sizeof(void*));
}
}
#define _ATL_PACKING 8
#define offsetofclass(base, derived) \
((DWORD_PTR)(static_cast<base*>((derived*)_ATL_PACKING))- \
_ATL_PACKING)