여기에 뭔가 빠졌을 것입니다. 새로 할당 된 메모리 덩어리의 포인터 주소를 저장해야합니다.std :: adressof로 포인터 주소를 저장하십시오.
나는이 작업을 수행 :
void* buffer = _aligned_malloc(4096,4);
assert(buffer);
//save its original address:
void* initialAddress = (void*) std::addressof(buffer);
initialAddress 버퍼보다 다른 주소를 보유하고 있습니다.
initialAddress = buffer;
그럼, 왜 표준 : AddressOf를 (버퍼) 다른 주소를 보여줍니다
나는 버퍼 포인터 나는 (물론입니다 일이 옳은 일) 같은 주소를 얻고을 할당 할 경우에만? 디버그하려면 VS2012 사용하고 있습니다. 아마도 버퍼의 주소가 아닌 포인터의 주소일까요?
@jrok 그 말을 잊어 버리십시오. –
그렇다면 누구나 std :: addressof를 사용하고 싶습니까? –
@MichaelIV 왜냐하면'operator &'는 특정 유형에 대해 오버로드 될 수 있기 때문입니다. 'std :: addressof'는 오버로드를 피한다. –