객체 인스턴스화: New 사용 또는 사용 안함
C에서 객체를 생성할 때 프로그래머는 "new" 연산자를 사용하거나 직접 인스턴스화할 수 있습니다. 그것 없이는. 두 접근 방식 모두 객체를 생성하지만 몇 가지 주요 측면에서 다릅니다.
새 항목 없음
"새 항목" 없이 객체를 인스턴스화하면 현재 범위에서 해당 객체에 대한 메모리가 직접 예약됩니다. 이는 일반적으로 스택에서 수행되며 자동 수명이 있는 개체가 생성됩니다. 객체는 정의된 범위 내에서 자동으로 생성되고 소멸됩니다.
예:
Time t(12, 0, 0); // t is a Time object
위 코드에서 "Time" 객체 "t"는 스택에 생성되고 해당 수명은 현재 범위에 바인딩됩니다.
New
"new"를 사용하여 객체를 인스턴스화하면 힙에 동적으로 메모리가 할당됩니다. 이를 통해 객체의 수명이 끝나면 객체가 명시적으로 생성되고 소멸될 수 있습니다. 포인터 "t"는 객체의 힙 주소를 저장합니다.
예:
Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
여기서 포인터 "t"에는 새로 생성된 "Time" 객체의 힙 주소가 할당됩니다. 객체의 수명은 범위와 무관하며 "삭제" 연산자를 사용하여 메모리를 해제할 때까지 지속됩니다.
주요 차이점
C 표준은 스택 및 힙 동작을 명시적으로 정의하지 않기 때문에 이러한 차이점은 구현에 따라 다르다는 점에 유의하는 것이 중요합니다. 그러나 대부분의 실제 구현에서는 자동 객체에 스택 메모리가 사용되고 동적 객체에 힙 메모리가 사용됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3