В общем случае вам не нужно беспокоиться о переполнении буфера. Это одно из основных преимуществ управляемого кода, а сбор мусора, пожалуй, является еще одним важным преимуществом.
Есть несколько крайних случаев, о которых вам следует знать - каждый раз, когда ваш управляемый код взаимодействует с неуправляемым кодом (вызовы Win32 API, COM-взаимодействие, P / Invoke и т. Д.), Существует вероятность переполнения буфера в неуправляемом коде на основе параметров, переданных из управляемого кода.
Также код, помеченный как «небезопасный», может напрямую манипулировать адресами памяти таким образом, чтобы вызвать переполнение буфера. Однако большая часть кода на C # написана без использования ключевого слова unsafe.