객체 인스턴스화: New 사용 또는 사용 안 함
C에서 객체를 생성할 때 프로그래머는 "new" 연산자를 사용하거나 직접 인스턴스화할 수 있습니다. 그것 없이는. 두 접근 방식 모두 객체를 생성하지만 몇 가지 주요 측면에서 다릅니다.
새 항목 없음
"새 항목" 없이 개체를 인스턴스화하면 현재 범위에서 해당 개체에 대한 메모리가 직접 예약됩니다. 이는 일반적으로 스택에서 수행되며 자동 수명이 있는 개체가 생성됩니다. 개체는 정의된 범위 내에서 자동으로 생성되고 소멸됩니다.
예:
Time t(12, 0, 0); // t is a Time object
위 코드에서 "Time" 개체 "t"가 스택에 생성됩니다. 수명은 현재 범위에 묶여 있습니다.
새로
사용 객체를 인스턴스화하는 "new"는 힙에 동적으로 메모리를 할당합니다. 이를 통해 객체의 수명이 끝나면 객체가 명시적으로 생성되고 소멸될 수 있습니다. 포인터 "t"는 객체의 힙 주소를 저장합니다.
예:
Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
여기서 포인터 "t"에는 새로 생성된 "Time"의 힙 주소가 할당됩니다. 물체. 객체의 수명은 범위와 무관하며 "삭제" 연산자를 사용하여 메모리를 해제할 때까지 지속됩니다.
주요 차이점
C 표준은 스택 및 힙 동작을 명시적으로 정의하지 않으므로 이러한 차이점은 구현에 따라 다르다는 점에 유의하는 것이 중요합니다. 그러나 대부분의 실제 구현에서는 자동 개체에 스택 메모리가 사용되고 동적 개체에 힙 메모리가 사용됩니다.
위 내용은 C 개체 인스턴스화: 스택 대 힙: `new` 또는 `new`가 아닌가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!