Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
'function' : utilise des pointeurs épinglants, mais la sémantique de déroulement n’est pas activée. Envisagez d’utiliser /EHa
Remarques
Pour dissocier un objet sur le tas managé pointé par un pointeur d’épinglage déclaré dans une étendue de bloc, le compilateur simule le comportement des destructeurs des classes locales, « prétendant » que le pointeur d’épinglage a un destructeur qui nullifie le pointeur. Pour activer un appel à un destructeur après avoir levée une exception, vous devez activer le déroulement de l’objet, que vous pouvez effectuer à l’aide de /EHsc.
Vous pouvez également dissocier manuellement l’objet et ignorer l’avertissement.
Exemple
L’exemple suivant génère l’erreur 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 );
}