CONTAINING_RECORD
Containing record是一个在C++编程中用处很大的一种技巧,它的功能为已知结构体或类的某一成员、对象中该成员的地址以及这一结构体名或类名,从而得到该对象的基地址。
VC6新建一个单文档工程;在视类CPP文件头部添加一个结构体;
先输出一下m_2的相对地址;
void CContainView::OnDraw(CDC* pDC)
{
CContainDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str1;
int* v3 = (int*)(&((PMYDATA)0)->m_2);
str1.Format("%p",v3);
//printf("%p\r\n",v3);
pDC->TextOut(50, 50, str1);
}
如果是用 %d 格式化,则输出如下;