#asp.net #vb.net
#asp.net #vb.net
Вопрос:
Что не так с этим кодом?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim i As Integer = 0
Do
Response.Write("hello")
Loop While i < 5
End Sub
У меня ошибка
System.OutOfMemoryException was unhandled
Insufficient memory to continue the execution of the program.
Кто-нибудь может объяснить, почему у меня эта ошибка?
Комментарии:
1. Вы никогда не увеличиваете i. Итак, ваш цикл продолжается вечно
2. @DavidCram Это тоже была моя первая мысль, но мне трудно понять, почему это вызывает
OutOfMemoryException
. Мне интересно, буферизует ли он ответ. Напишите вывод, и он в конечном итоге уничтожит всю память, доступную для этого буфера.3. @DavidCram спасибо, это решает мою проблему
Ответ №1:
Это фиксированная версия вашего кода:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim i As Integer = 0
Do
Response.Write("hello")
i = i 1
Loop While i < 5
End Sub
Ответ №2:
Итак, ваш вопрос: «почему не хватает памяти». Потому что .NET Framework может получить доступ только к такому объему памяти. По сути, ваш цикл гласит: «продолжайте сжигать память, пока компьютер не выйдет из строя или Иисус не вернется». Поскольку Армагеддон не произошел, и Фреймворк имеет защиту от сбоя компьютера, ваш предполагаемый результат завершается неудачей, и вместо этого он выдает ошибку нехватки памяти, когда вы просматриваете память своим циклом, в котором нет условия завершения или приращения, чтобы избежать бесконечного цикла (или пока Фреймворк не остановит вас от сбоякомпьютер). 😉