2009-02-08 8 views
1

Je recherche des causes courantes d'erreurs de dépassement de tampon dans .NET.Causes courantes des erreurs de dépassement de tampon sous .NET

Je sais que le dépassement de tampon est impossible sous le code .NET géré. Cependant, cette exception est toujours possible dans le cadre de l'application .NET.

choses que je pensais de -

  • arguments valides pour objet COM appelle
  • arguments valides pour PInvoke/Win32 appelle

Quelle est la meilleure méthode de tampon de débogage erreurs dépassement?

+0

Je ne vois pas qu'il y ait une vraie question ici: un dépassement de tampon peut se produire chaque fois que vous appelez une méthode non gérée qui écrit sur une longueur de mémoire non vérifiée. –

+0

Je suis d'accord avec mitch – Element

+0

Alors, comment allez-vous les gars déboguer les erreurs de saturation de la mémoire tampon sous. NET? – user62572

Répondre

2

D'après les commentaires à la question:

Alors, comment les gars allez-vous faire des erreurs de débogage mémoire tampon dépassement sous .NET?

La plupart du temps, il n'y a rien à déboguer en premier lieu. Je veux dire par là que, bien sûr, un bug existe et que vous devez le réparer, mais le bug n'est pas dans votre code. C'est dans une bibliothèque non gérée que vous appelez que vous ne pouvez pas changer. La seule chose que vous pouvez faire est de ne pas utiliser cette bibliothèque de cette façon.

Voilà donc une cause commune: un bogue dans une bibliothèque non gérée.

Cela peut également se produire si vous appelez une bibliothèque non gérée sans bogue, mais la bibliothèque s'attend à ce que vous lui indiquiez explicitement la taille du tampon et que vous lui attribuez un mauvais numéro. C'est un problème avec votre code que vous devez corriger. Cependant, cela arrive rarement dans .Net car trouver la taille d'un tampon est généralement aussi simple que de vérifier la propriété .Length d'un tableau d'octets.

+0

Merci Joel. Comment allez-vous déterminer la bibliothèque où le débordement se produit? – user62572

+0

Je ne me fie pas beaucoup au code non géré en premier lieu. Je sais qu'il existe une école de pensée qui considère .Net comme un moyen rapide de mettre un gui sur le «vrai» code, mais je pense que cette approche est erronée. Donc, ma réponse est: il est facile de la réduire car il y a peu de code non géré à vérifier. –

+0

Donc, si j'utilise un objet COM, comment puis-je savoir quel appel de méthode est la cause du débordement? – user62572

Questions connexes