两个指针指向相同的参考

时间:2011-05-12 10:42:28

标签: c++ pointers

我对指针有疑问

我有两个指针,一个是初始化而另一个不是;

现在我想要没有值(尚未初始化)的第二个指针指向内存中的相同位置。

好的,我写了一个小程序来做这个并且它可以正常工作

int *P , *P2 ; 
P = new int ; 
P2 = new int ; 

*P = 1 ; 
P2 = P ; 
cout << "P= " << *P << endl << endl ; 
cout << "P2= " << *P2 << endl << endl ; 

*P = 0 ;
cout << "P2= " << *P2 << endl << endl ;  

输出如下:

P = 1 ; 
P2 = 1 ; 

P2 = 0 ; 

所以它像我想要的那样正确。

现在我想做同样的事情,但这次我想用ID3D11Device *

来做

以下是代码:

 ID3D11Device *Test ;
 Test = Device->Get_Device() ; 


cout << "Test =" << Test << endl << endl ; 
cout << "Get = " << Device->Get_Device()<< endl << endl ; 


Device->~CL_Device();

cout << "Test =" << Test << endl << endl ; 
cout << "Get = " << Device->Get_Device()<< endl << endl ; 

Get_Device函数定义:

![ID3D11Device  *const Get_Device()  const     { return  _Device ;}][1]

schema解释我想要的东西。

1 个答案:

答案 0 :(得分:3)

首先,您应该避免直接调用对象的析构函数。这并没有释放与之相关的记忆。请改用delete Device;

其次,如果你想要两个指针,你只需按照你在第一个例子中所示的那样继续:

ID3D11Device *Test, *Test2;
Test = Device->Get_Device();
Test2 = Test;

现在TestTest2Device->Get_Device()都指向内存中的相同位置,当然只有Device->Get_Device()始终返回相同的指针。

编辑:见评论