C#에서 클래스 멤버는 주로 인스턴스 멤버와 정적 멤버로 나뉩니다. 이 두 멤버는 메모리 할당 방식과 생명 주기에서 차이가 있습니다. 이번 글에서는 이 차이를 간단하고 명확하게 살펴보겠습니다.
1. 인스턴스 멤버 메모리
인스턴스 멤버는 클래스의 객체를 생성할 때마다 별도의 메모리가 할당됩니다. 따라서 같은 클래스의 여러 객체가 존재하면, 각 객체는 자신의 인스턴스 멤버 값을 독립적으로 가집니다.
class Person
{
public string Name; // 인스턴스 멤버
}
Person p1 = new Person();
p1.Name = "Alice";
Person p2 = new Person();
p2.Name = "Bob";
위 예시에서 p1과 p2는 각각 독립적인 Name 공간을 갖습니다.
2. 정적 멤버 메모리
정적 멤버(static)는 클래스 자체에 속하며, 프로그램 실행 시 클래스가 메모리에 로딩될 때 한 번만 할당됩니다. 모든 객체가 정적 멤버를 공유하므로, 값 변경 시 전체 인스턴스에 영향을 미칩니다.
class Person
{
public static int Count; // 정적 멤버
}
Person.Count = 2;
모든 Person 객체에서 Count는 동일한 메모리를 참조합니다.
3. 요약
- 인스턴스 멤버: 각 객체마다 별도 메모리 할당
- 정적 멤버: 클래스당 한 번만 메모리 할당, 모두 공유
이러한 메모리 차이를 이해하면 성능 최적화 및 객체 설계에 큰 도움이 됩니다.
'C#' 카테고리의 다른 글
| C# 이벤트 vs 콜백(CallBack) 비교와 선택 기준 (0) | 2026.06.26 |
|---|---|
| C# sealed 키워드로 상속 제한하기 (0) | 2026.06.26 |
| C# 객체 초기화(Object Initializer)와 컬렉션 초기화 비교 (0) | 2026.06.25 |
| C# 로컬 변수 초기화와 스코프 관리 (0) | 2026.06.25 |
| C# 메서드 반환 타입으로 Func<T> 사용하기 (0) | 2026.06.24 |