Delen via


Compilerwaarschuwing (niveau 3) C4823

'functie': maakt gebruik van pinning-pointers, maar wordt de unwind-semantiek niet ingeschakeld. Overweeg om /EHa te gebruiken

Opmerkingen

Om een object op de beheerde heap los te maken waarnaar wordt verwezen door een pinning pointer die in een blokscope is gedeclareerd, simuleert de compiler het gedrag van destructors van lokale klassen, alsof de pinning pointer een destructor heeft die de pointer nullificeert. Als u een aanroep naar een destructor wilt inschakelen nadat u een uitzondering hebt opgeworpen, moet u object unwinden inschakelen, wat u kunt doen met /EHsc.

U kunt het object ook handmatig losmaken en de waarschuwing negeren.

Example

In het volgende voorbeeld wordt C4823 gegenereerd.

// C4823.cpp
// compile with: /clr /W3 /EHa-
using namespace System;

ref struct G {
   int m;
};

void f(G ^ pG) {
   try {
      pin_ptr<int> p = &pG->m;
      // manually unpin, ignore warning
      // p = nullptr;
      throw gcnew Exception;
   }
   catch(Exception ^) {}
}   // C4823 warning

int main() {
   f( gcnew G );
}