선생님 안녕하세요.
Person 클래스 내부에 자기 인스턴스를 생성하면 스택오버플로우가 발생하는데
자기 인스턴스 앞에 static을 붙이면 스택오버플로우가 발생하지 않고 정상 출력됩니다.
그래서 수정 전과 수정 후의 메모리가 어떻게 변화하는지 그림판을 통해 그렸는데
혹시 틀린 부분이 있는지 확인부탁드립니다.
그림 파일 첨부합니다!
항상 감사드립니다!
[수정 전]
namespace Test
{
class Person
{
Person OnlyOnePerson = new Person("이솜"); // ★★★
public string Name;
public Person(string name)
{
this.Name = name;
}
public void GetName()
{
Console.WriteLine(Name);
}
public void Test()
{
Console.WriteLine(OnlyOnePerson.Name);
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person("전도연");
person.Test();
}
}
}
[출력]
Process is terminated due to StackOverflowException.
[수정 후]
namespace Test
{
class Person
{
static Person OnlyOnePerson = new Person("이솜"); // ★★★
public string Name;
public Person(string name)
{
this.Name = name;
}
public void GetName()
{
Console.WriteLine(Name);
}
public void Test()
{
Console.WriteLine(OnlyOnePerson.Name);
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person("전도연");
person.Test();
}
}
}
[출력]
이솜
[최초 등록일: ]
[최종 수정일: 6/2/2021]