> 백엔드 개발 > C++ > C의 `new` 연산자는 항상 메모리를 0으로 초기화합니까?

C의 `new` 연산자는 항상 메모리를 0으로 초기화합니까?

Barbara Streisand
풀어 주다: 2024-12-10 22:27:26
원래의
291명이 탐색했습니다.

Does the `new` Operator in C   Always Initialize Memory to Zero?

연산자 new는 메모리를 0으로 초기화합니다

new 연산자는 메모리를 0으로 초기화하지 않는다는 일반적인 오해에도 불구하고 실제로 이를 수행할 수 있습니다. 특정 조건에서 작업을 수행합니다.

C에는 new 연산자가 0을 수행하는 두 가지 주요 시나리오가 있습니다. 초기화:

  1. 괄호 초기화:

    new 뒤에 괄호와 빈 초기화 목록이 오는 경우(예: wsk = new unsigned int()) ;, 해당 유형의 기본 생성자를 명시적으로 호출합니다. unsigned int와 같은 기본 유형의 경우 기본 생성자는 메모리를 0으로 초기화합니다.

  2. 괄호로 묶인 배열 초기화:

    이전 시나리오와 유사합니다. wsa = new unsigned int[5]();와 같이 배열 선언 내에 괄호와 빈 초기화 목록을 사용합니다. 배열의 각 요소를 0으로 초기화합니다.

제공된 예제 코드에서 다음 줄은 0 초기화를 보여줍니다.

wsk2 = new unsigned int(5);
로그인 후 복사

이렇게 하면 wsk2가 값 5로 초기화됩니다. .

wsk2 = new unsigned int;
로그인 후 복사

초기화 목록 없이 괄호 구문을 사용하기 때문에 wsk2를 0으로 초기화합니다. 이 동작은 스칼라와 배열 모두에 적용됩니다.

예제의 두 번째 부분에서 출력은 0 초기화를 확인합니다.

wsk2: 0x928e008 5
wsk2: 0x928e008 0
로그인 후 복사

첫 번째 줄은 wsk2가 주소 0x928e008을 가리키는 것을 보여줍니다. 그리고 값 5를 포함합니다. wsk2를 삭제하고 new unsigned int;를 사용하여 다른 wsk2를 생성한 후 두 번째 줄은 이제 동일한 항목을 가리키고 있음을 보여줍니다. 주소(0x928e008)이지만 0이 포함되어 있습니다.

위 내용은 C의 `new` 연산자는 항상 메모리를 0으로 초기화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿