Udostępnij za pomocą


Ostrzeżenie kompilatora (poziom 3) C4823

"function" : używa przypinania wskaźników, ale semantyka nie jest włączona. Rozważ użycie /EHa

Uwagi

Aby odpinać obiekt na zarządzanym stercie wskazywanym przez wskaźnik przypinania zadeklarowany w zakresie bloku, kompilator symuluje zachowanie destruktorów klas lokalnych, "udając" wskaźnik przypinania ma destruktora, który nullifies wskaźnik. Aby włączyć wywołanie destruktora po wystąpieniu wyjątku, należy włączyć odwijanie obiektu, co można zrobić za pomocą /EHsc.

Możesz również ręcznie odpiąć obiekt i zignorować ostrzeżenie.

Przykład

Poniższy przykład generuje kod C4823.

// 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 );
}