#include <iostream>
#include <utility>
int main()
{
double* ptr;
{
double temp = 5.5;
ptr = new double(std::move(temp));
} // temp dies here
std::cout << *ptr << "\n";
delete ptr;
}
나는이 작품을 알고있다. 하지만이 "5.5"값이 동일하지만 동적 할당 주소로 직접 이전 될지 여부가 중요합니다. 즉, temp
이 더 이상 유효하지 않을 때에도 ptr
은 여전히 temp
을 가리 킵니까?변수 수명 연장하기
우리가 단기 지역 범위에서 장기 저장으로 이동하고 나중에 변수가 언제 죽을지를 결정하는 거대한 배열이라고 가정 해 봅시다.
더 설명 : 우리는 주소의 메모리에 위치하고 있다고 가정
. 그것은 잠시 후에 죽을 것입니다. 그러나 죽기 전에 우리는 멋진 속임수를 만들고이 같은 A 주소를 잠그면 죽지 않을 것입니다. 따라서 우리는 그것을 유지하기 위해 물건을 복사 할 필요가 없었습니다. 우린 그냥 잠 갔어. C++에서 가능합니까?
아니요, 주소가 스택에 있으면 함수를 반환 한 후 주소를 사용할 수 없습니다. –
_ 살아 남기 위해 물건을 복사 할 필요가 없었습니다 ._ static 변수의 로컬 변수 나 static 변수와 비슷합니까? – txtechhelp
''double'에'std :: move'는 아무 것도하지 않고, 마침내 단지 복사본을 만듭니다. – Jarod42