Учитывая следующий код (и тот факт, что VirtualAlloc()
возвращает a void*
):
BYTE* pbNext = reinterpret_cast<BYTE*>(
VirtualAlloc(NULL, cbAlloc, MEM_COMMIT, PAGE_READWRITE));
почему reinterpret_cast
выбран вместо static_cast
?
Раньше я думал, что reinterpret_cast
в порядке, например. (например, DWORD_PTR
), но отличать от void*
до a BYTE*
не означает static_cast
ОК?
Существуют ли какие-либо (тонкие?) различия в этом конкретном случае, или они являются как действительными действительными указателями?
Предпочитает ли стандарт С++ этот случай, предлагая способ вместо другого?