강의 중 { }안의 영역을 벗어나서 죽는다는 뜻이 무슨 뜻인가요?
85
작성한 질문수 1
강의 8:35초 쯤 IntArray my_int_arr(10000);
이 while (true) 의 { } 안의 영역을 벗어나서 죽을 때가 되면, 자기가 알아서 소멸자를 호출 한다고 하셨는데, IntArray my_int_arr(10000); 가 죽을 때가 언제인지? 또 죽는 것이 어떤 것을 말씀하는 지가 궁금합니다.
답변 2
0
안녕하세요? 질문&답변 도우미 durams입니다.
교수님께서 '변수가 죽는다'라고 표현하신 것은 4.1 지역 변수, 범위 ,지속 기간에서 다루었던 개념입니다. 지역 변수의 경우 해당 변수가 선언된 local scope(지역 범위)를 벗어나게 되면 자동으로 소멸하게 되며, 이러한 경우 automatic duration을 가졌다고 표현합니다. 만약 생소한 개념이라면, 다시 해당 영상을 보고 오시면 이해에 도움이 되실 겁니다.
본 강의에서 다루고자 하는 가장 중요한 내용은 소멸자의 존재의의입니다. 일반적인 클래스 멤버의 경우 클래스 객체가 소멸하면 같이 메모리가 반환되지만, 동적 할당한 메모리를 가리키는 포인터인 경우에는 클래스 객체가 소멸한다고 해서 자동으로 동적 할당 메모리가 반환되지 않습니다. 이 메모리 반환을 소멸자에서 해주도록 구현하면, 메모리 누수를 방지하게 됩니다.
더 궁금한 점이 있으시다면 질문 주세요.
0
안녕하세요, 인프런 AI 인턴입니다. 대연동핵주먹님.
이 질문은 C++에서 객체의 소멸과 관련된 이해가 필요한 주제입니다. 질문하신 부분에 대해 간단히 설명 드리겠습니다.
C++에서는 객체가 생성되면 해당 객체가 존재하는 범위(scope)가 있습니다. 여기서 “scope”는 중괄호 {}로 구분되는 영역을 의미합니다. 예를 들어, 아래와 같이 while문 내부에 선언된 객체는 while문이 시작되는 {부터 끝나는 }까지의 범위를 갖습니다.
while (true) {
IntArray my_int_arr(10000);
// ...
}
IntArray my_int_arr(10000);는 while문 내부의 지역 변수입니다. 지역 변수는 그 변수가 선언된 블록(여기서는 while 블록)이 끝나면 자동으로 소멸됩니다. 따라서, my_int_arr는 while문의 {} 안을 벗어날 때, 즉 }에 도달할 때 소멸자가 호출되어 메모리가 해제됩니다. 하지만 while(true)는 영원히 반복하기 때문에 while문 바깥으로 나가는 순간은 사실상 존재하지 않습니다. 대신, break 문이나 프로그램 종료 등의 이유로 while 루프가 종료될 때 소멸합니다.
이와 관련하여 더 구체적인 정보를 원하신다면, 유사한 질문 사례들이 도움이 될 수 있습니다:
이 질문은 소멸자가 호출되는 시점에 대한 구체적인 이해를 도울 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
교재 있나요?
1
129
2
11:11 부근에 Something::temp와 Something::getValue의 앞에 &를 붙이는 이유가 뭔가요? (함수 이름은 포인터(주소)가 아닌가요?)
1
86
3
using namespace std; 선언 후에 std::를 하는 이유가 궁금합니다
1
99
2
cstr직접구현
0
113
3
BubbleSort
1
75
2
숙제 마지막 부분
1
78
2
강의와 똑같이 진행했는데 링킹 에러가 발생합니다.
1
92
2
수업할때 레퍼런스로 사용하는 도서는 어떤 도서인가요??
1
159
2
공변반환형 관련 문의 드립니다.
1
89
2
170강 유니크 포인터에대해 질문있습니다
1
79
1
섹션 5 퀴즈의 답이 이상합니다
1
83
2
이중포인터와 배열이 이해가 안됩니다.
1
152
2
5분 17~5분 34초 객체 잘림 질문
1
75
1
Resource.h 코드 알려주세요
1
70
1
char name[] 배열의 길이와 관련해 일부 궁금점이 생겨서 질문합니다
1
93
2
화면좌측 숫자 보이기
1
113
1
화면 좌측 숫자 보이기
0
65
1
처음 c++ 수강하려는데요. 비주얼스튜디오 2022 다운로드해서 설치하면 되는건가요??
1
135
3
46강 string 버퍼 질문입니다
1
80
2
프로그래머스 수열과 구간 쿼리 2 문제 질문입니다.
1
123
2
[] 범위 검사시 assert 사용 관련 질문
1
86
2
Lecture 클래스 멤버변수 명명 관련
0
87
2
프로그래머스의 대소문자 바꿔서 출력하기 문제를 푸는데요
0
71
1
noexcept과 throw()
1
80
2





