Unicorn with delicious cookie
Nous utilisons des cookies pour améliorer votre expérience de navigation. En savoir plus
Accepter
to the top
>
>
>
V744. Temporary object is...
menu mobile close menu
Additional information
toggle menu Contents

V744. Temporary object is immediately destroyed after being created. Consider naming the object.

25 Jan 2016

The analyzer detected an error that has to do with the programmer forgetting to name a newly created object. In that case, a temporary anonymous object will be created and destroyed right afterwards. Sometimes programmers may want it that way deliberately, and there's nothing bad about this practice; but it's obviously an error when dealing with such classes as 'CWaitCursor' or 'CMultiLock'.

Consider the following example:

void func(){
  CMutex mtx;
  CSingleLock(&mtx, TRUE);
  foo();
}

In this code, a temporary anonymous object of type 'CSingleLock' will be created and destroyed right off, even before the foo() function is called. In this example, the programmer wanted to make sure that the execution of the foo() function would be synched, but actually it will be called without synching, and it may cause serious errors.

To avoid bugs like that, make sure you name objects you're creating.

Example of correct code:

void func(){
  CMutex mtx;
  CSingleLock lock(&mtx, TRUE);
  foo();
}

This diagnostic is classified as: