Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 블록 내부에 생성된 객체는 어디에 저장됩니까?


이 섹션에서는 C++ 프로그램이 컴파일될 때 변수와 개체가 메모리에 저장되는 위치에 대해 설명합니다. 우리가 알다시피, 객체가 저장될 수 있는 메모리의 두 부분이 있습니다 -

  • 스택 - 메모리 블록 내부에 선언된 모든 멤버는 스택 섹션 내부에 저장됩니다. 주 함수도 함수이므로 그 안의 요소는 스택 내부에 저장됩니다.

  • − 일부 객체가 동적으로 할당되면 힙 섹션에 저장됩니다.

블록이나 함수 내부에 선언된 객체의 범위는 객체가 생성된 블록으로 제한됩니다. 객체는 블록 내부에 생성될 때 스택에 저장되고 컨트롤이 블록이나 함수를 종료하면 객체가 제거되거나 소멸됩니다.

동적으로 할당된 객체의 경우(런타임 동안) 객체는 힙에 저장됩니다. 이것은 new operator의 도움으로 수행됩니다. 해당 객체를 파괴하려면 del 키워드를 사용하여 명시적으로 파괴해야 합니다.

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include 네임스페이스 std;class Box 사용 { int width; int length;public:Box(int ​​length =0, int width =0) { this->length =length; 이것->너비 =너비; } ~Box() { cout <<"상자가 파괴되고 있습니다" <get_len() <get_width() <get_len() <get_width() < 

출력

Box 차원:Length:2Width:3Box is destroying block, destructor 스택에 저장된 객체 자동 호출 ----------------------- ----------------------------Box 2 차원은 다음과 같습니다.length :5width :6Box는 box2의 너비를 파괴합니다. 사전>