Avertissement du compilateur (niveau 3) C4823
'function' : utilise des pointeurs épinglants, mais la sémantique de déroulement n’est pas activée. Envisagez d’utiliser /EHa
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 );
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour