int arr[ 5 ] = { 0 };
int i = 8; // out of bounds
arr[ i ] = 8;
Je sais que je peux vérifier i like this if (i < 0 || i> 5) ....Comment protéger le code des accidents dans cette situation
Je sais aussi de SEH dans Visual Studio, mais il semble que la solution ne fonctionne pas.
__try { /* code */ }
__except(GetExceptionCode() == EXCEPTION_ARRAY_BOUNDS_EXCEEDED)
Cela ne fonctionne pas. Comme je vois SEH travailler dans des situations comme diviser à 0, accéder aux pages protégées ... Comment puis-je protéger mon programme contre les plantages?
Bonjour Neil Butterworth. Je connais les conteneurs et je l'utilise quand c'est possible, mais que faire quand j'ai besoin de tableaux? –
@David Comme je l'ai dit dans mon autre commentaire, vous n'avez probablement pas besoin d'utiliser des tableaux - je ne les utilise presque jamais dans mon propre code. Mais si vous sentez que vous en avez besoin, il n'existe aucun moyen garanti de vérifier les violations d'accès. –
Can Valgrind peut-il détecter l'accès hors limites? – fredoverflow