变量的生命周期

时间:2022-09-24 14:41:09
void CMYDlg::OnBnClickedButton1()
{
	int x=123;
int *y=new int;
int *z=new int;
y=&x;
*z=x;
m_dwordA=(DWORD)&x;
m_dwordB=(DWORD)y;
m_dwordC=(DWORD)z;    //m_dwordA B C都是类的成员变量
}

m_dword A B C哪个成员变量能成功把 123保存?

m_dwordC=( DWORD )z;

只有这个可以。

m_dwordA和m_dwordB,存储的都是变量x的地址,而这个函数结束后,x指向的内存都是被释放的。所以不能保存。

只有m_dwordC指向的是申请的int类型的空间,而m_dwordC保存的数据是这个申请空间的地址。所以不会被释放。