Переполнение стека, и GetBytes

Написал код для генерации MD5 хеша:

public static string ToMD5(this string v)
{
    StringBuilder hashString = new StringBuilder();

    using (MD5 hash = MD5.Create())
    {
        byte[] md5 = hash.ComputeHash(Encoding.UTF8.GetBytes(v));

        for (int i = 0; i < md5.Length; i++)
        {
            hashString.Append(md5[i].ToString("X2"));
        }
    }

    return hashString.ToString();
}

Ту есть функция GetBytes(), не будет ли в этом месте переполнение стека, если текст для хеширования будет большим

если создать byte a = new byte[99999999999], то выдаёт OverflowException: Arithmetic operation resulted in an overflow.


Ответы (1 шт):

Автор решения: Barmaley Red Star

Переполнения стека на будет, потому что GetBytes() возвращает byte[], в соответственно в стеке будет только ссылка на массив, а не весь массив.

new byte[99999999999]

Вызывает не переполнение стека, а переполнение кучи.

→ Ссылка