Переполнение стека, и 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]
Вызывает не переполнение стека, а переполнение кучи.