연산자 new는 메모리를 0으로 초기화합니다
new 연산자는 메모리를 0으로 초기화하지 않는다는 일반적인 오해에도 불구하고 실제로 이를 수행할 수 있습니다. 특정 조건에서 작업을 수행합니다.
C에는 new 연산자가 0을 수행하는 두 가지 주요 시나리오가 있습니다. 초기화:
괄호 초기화:
new 뒤에 괄호와 빈 초기화 목록이 오는 경우(예: wsk = new unsigned int()) ;, 해당 유형의 기본 생성자를 명시적으로 호출합니다. unsigned int와 같은 기본 유형의 경우 기본 생성자는 메모리를 0으로 초기화합니다.
괄호로 묶인 배열 초기화:
이전 시나리오와 유사합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!