C#의 OutOfMemoryException은 프로그램 실행을 계속하기에 충분한 메모리가 없을 때 .NET 프레임워크 실행 엔진에서 발생하는 예외입니다. 이름에서 알 수 있듯이 이 예외는 CLR, 즉 공용 언어 런타임이 프로그램의 특정 작업을 수행하는 데 필요한 충분한 메모리를 할당할 수 없을 때 프로그램에서 발생합니다.
이 예외는 항상 메모리에 사용 가능한 공간이 충분하지 않다는 의미는 아니지만 때로는 프로그램 할당에 필요한 연속 메모리가 충분하지 않음을 의미합니다.
구문
C#에서 OutOfMemoryException을 catch하는 구문은 다음과 같습니다.
try { //user code which can throw OutOfMemoryException } catch(OutOfMemoryException <em>exception</em>) { //statements to handle the exception }
C#에서 OutOfMemoryException을 발생시키는 구문은 다음과 같습니다.
throw new OutOfMemoryException();
위 문장에서 'throw'는 C#에서 예외를 발생시키는 데 사용되는 키워드입니다.
C#에서는 프로그램 실행을 계속할 공간이 충분하지 않으면 OutOfMemoryException이 발생합니다. 이 예외가 발생하는 데는 여러 가지 이유가 있을 수 있습니다. 또한 프로그램을 실행할 충분한 공간이 있지만 이 공간이 프로그램에서 수행하는 데 필요한 할당에 연속되지 않는 경우에도 이 예외가 발생합니다. 이 예외가 발생하는 두 가지 주요 이유는 다음과 같습니다.
StringBuilder의 MaxCapacity 속성에 지정된 길이 이상으로 StringBuilder 개체의 길이를 늘리려고 합니다.
"메모리가 부족하여 프로그램을 계속 실행할 수 없습니다."라는 예외가 발생합니다.
이 예외의 원인이 될 수 있는 다른 이유는 다음과 같습니다.
아래에 언급된 예시는 다음과 같습니다
StringBuilder 개체를 최대 용량 이상으로 확장하려고 할 때 프로그램에서 발생하는 OutOfMemoryException을 보여주는 예
코드:
using System; using System.Text; public class Program { public static void Main() { StringBuilder stringBuilder = new StringBuilder(17, 17); stringBuilder.Append("Welcome to the "); try { stringBuilder.Insert(0, "world of C# programming", 1); Console.WriteLine(stringBuilder.ToString()); Console.ReadLine(); } catch (OutOfMemoryException exception) { Console.WriteLine(exception.Message); Console.ReadLine(); } } }
출력:
추가할 요소 수가 목록의 용량보다 많은 경우 목록에 요소를 추가하려고 시도하는 중 OutOfMemoryException이 발생하는 프로그램의 예
코드:
using System; using System.Text; using System.Collections.Generic; namespace ConsoleApp4 { public class Program { public static void Main() { try { string[] strArray = GetArray(); Console.WriteLine(strArray); Console.ReadLine(); } catch (OutOfMemoryException exception) { Console.WriteLine(exception); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } public static string[] GetArray() { List<string> strList = new List<string>(); for (int i = 0; i <= int.MaxValue; i++) { strList.Add("Hello"); } return strList.ToArray(); } } }
출력:
다음 사항을 염두에 두면 C#에서 OutOfMemoryException을 피할 수 있습니다.
목록에서 64비트 플랫폼을 사용할 수 없는 경우:
OutOfMemoryException은 메모리가 부족하거나 C# 프로그램에 필요한 할당을 위한 연속 메모리가 부족함을 프로그래머에게 알리는 런타임 예외입니다.
이 예외를 방지하려면 사용자는 항상 필요한 예방 조치를 취하고 이 예외를 처리해야 합니다.
위 내용은 C# 메모리 부족예외의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!