Распространенные причины - ошибки переполнения буфера в .NET - PullRequest
1 голос
/ 09 февраля 2009

Я ищу распространенные причины ошибок переполнения буфера в .NET.

Я знаю, что переполнение буфера невозможно в управляемом коде .NET. Однако это исключение все еще возможно в области применения .NET.

Вещи, о которых я думал -

  • Допустимые аргументы для вызовов COM-объекта
  • Допустимые аргументы для вызовов PInvoke / Win32

Каков наилучший метод отладки ошибок переполнения буфера?

1 Ответ

2 голосов
/ 09 февраля 2009

Из комментариев к вопросу:

Так как же вы, ребята, отлаживаете ошибки переполнения буфера в .NET?

В большинстве случаев нет ничего, что нужно отлаживать. Я имею в виду, что, конечно, ошибка существует, и вам нужно ее исправить, но ошибка не в вашем коде. Это неуправляемая библиотека, в которую вы звоните, которую вы не можете изменить. Единственное, что вы можете сделать, - это не использовать эту библиотеку таким образом.

Так что это одна из распространенных причин: ошибка в неуправляемой библиотеке.

Это также может произойти, если вы вызываете неуправляемую библиотеку, в которой нет ошибки, но библиотека ожидает, что вы явно укажете ей размер буфера, и вы дадите ей неправильный номер. Это проблема с вашим кодом, которую нужно исправить. Однако это редко случается в .Net, поскольку найти размер буфера обычно так же просто, как проверить свойство .Length байтового массива.

...