Я написал следующую функцию
public void TestSB()
{
string str = "The quick brown fox jumps over the lazy dog.";
StringBuilder sb = new StringBuilder();
int j = 0;
int len = 0;
try
{
for (int i = 0; i < (10000000 * 2); i++)
{
j = i;
len = sb.Length;
sb.Append(str);
}
Console.WriteLine("Success ::" + sb.Length.ToString());
}
catch (Exception ex)
{
Console.WriteLine(
ex.Message + " :: " + j.ToString() + " :: " + len.ToString());
}
}
Теперь я полагаю, что этот конструктор строк может принимать более 2 миллиардов символов (2 147 483 647, если быть точным).
Но когда я запустил вышеупомянутую функцию, она выдала "System.OutOfMemoryException" как раз при достижении емкости около 800 миллионов. Более того, я вижу совершенно разные результаты на разных компьютерах с одинаковой памятью и одинаковым количеством нагрузка.
Кто-нибудь, пожалуйста, объясните мне причину этого.