Tester la validité d'un pointeur
Re-Bonjour,
J'ai un pointeur sur un objet de la classe CMyCall dont j'aimerais tester la validité au cours de l'exécution du programme.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| void f1(CMyCall* pCall)
{
f2(pCall);
}
void f2(CMyCall* pCall)
{
...
//Lance un thread avec pCall en paramètre
AfxBeginThread( (AFX_THREADPROC) _ThreadProc, (LPVOID) pCall );
} |
Or dans ce thread, j'aimerais tester pCall avant de faire des actions dessus (answer, speak, drop)
Code:
1 2 3 4 5 6 7 8
| UINT thread(LPVOID par)
{
CMyCall* pCall = (CMyCall*)par;
if(pCall) pCall->Answer();
if(pCall) pCall->Speak();
if(pCall) pCall->Drop();
} |
Donc tout le problème est que pCall peut être détruit ailleurs en cours de programme, et ensuite mis à NULL, lorsque l'appel a été raccroché par l'autre partie par exemple.
La fonction qui se charge de ça, fait :
Code:
1 2
| pCall->Deallocate();
pCall = NULL; |
Quelle est la solution pour avoir accès au test if(pCall) dans mon thread, car là tel que j'ai fait le pointeur passé n'est pas averti de la mise à NULL ?
@+