Aracılığıyla paylaş


Uyarı C26404

Geçersiz durumda olabilecek bir owner<T> öğesini silmeyin (r.3)

Açıklamalar

Sahip işaretçisi kaynağını serbest bıraktığında veya aktardığında "geçersiz" duruma geçer. Böyle bir işaretçinin silinmesi, çift silme nedeniyle ani bellek bozulmasına veya silinen kaynağa başka bir sahip işaretçisinden erişildiğinde erişim ihlaline neden olabilir.

Kod analizi adı: DONT_DELETE_INVALID

Örnek 1

Değerini aktardıktan sonra sahip siliniyor:

gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
    delete state;   // C26404

Örnek 2

Başlatılmamış sahip siliniyor:

gsl::owner<Message*> message;
if (popLast)
    message = ReleaseMessage();
delete message; // C26404