C++에서 삭제 연산자를 이해하려고합니다.C++의 새 연산자 및 삭제 연산자의 논리를 이해하십시오.
나는 포인터와 new 연산자를 사용하여 뒤에 논리를 이해할 수있는, 그러나 나는 "delete 연산자 동적 변수를 제거하고 동적 변수는 자르기 쉬운 암석으로 점령. 메모리를 반환"p517을, 문제는 C로 해결하는 것을 이해 ++ 9 판.
나는 제 3의 cout 문과 일치하지 않는다고 생각합니다. 그리고 나는 세 번째의 계산서가 첫 번째와 비슷한 sth가 될 것으로 예상했다.
int main() {
int *p1;
cout << "p1 address: " << &p1 << " and points to the address "<< p1 << " which has the value: " << *p1<< endl;
p1 = new int;
cout << "p1 address: " << &p1 << " and points to the address "<< p1 << " which has the value: " << *p1<< endl;
delete p1;
cout << "p1 address: " << &p1 << " and points to the address "<< p1 << " which has the value: " << *p1<< endl;
cout << endl;
return 0;
}
내가 :) 어떤 설명을 부탁드립니다)
포인터의 값은 변경되지 않습니다. 너는 무엇을 기대 했는가? 삭제 후 포인터를 사용하는 btw는 – Incomputable
을 호출합니다. 모든 출력은 UB입니다. 첫 번째 인쇄 후 초기화되지 않은 포인터를 역 참조하고, 두 번째는 초기화되지 않은 변수를 읽고, 세 번째 역 참조는 삭제 된 포인터입니다. – BeyelerStudios
내가 가리키는 메모리 주소가 다른 값을 가질 것으로 예상했다. 마치 포인터가 초기화되지 않은 것처럼! – Zingo