Работа с портированием 32-битного приложения на Windows C++ на 64-разрядное. К сожалению, код использует частое кастинг в обоих направлениях между значениями DWORD и указателя.Как зарезервировать нижнюю 4GB виртуальную машину в приложении x64 C++
Одна из идей состоит в том, чтобы как можно раньше зарезервировать первые 4 ГБ виртуального пространства процесса во время запуска процесса, чтобы все последующие вызовы в резервную память были с виртуальных адресов более 4 ГБ. Это приведет к ошибке нарушения прав доступа к любому небезопасному методу от указателя к DWORD, а затем обратно к указателю и поможет ловить ошибки раньше.
Когда я смотрю карту памяти очень простой одной линии на C++-программе, есть много библиотек, загруженных в нижнем 4 ГБ? Есть ли способ убедиться, что все библиотеки и т. Д. Загружаются только выше 4 ГБ?
Благодаря
Вы прочитали вопрос? Плакат не спрашивает, как избежать адресов более 4 ГБ. (И если да, то ответ будет состоять в том, чтобы передать/LARGEADDRESSAWARE = NO в компоновщик.) И есть намного лучшие способы найти проблемы усечения указателя, чем grep-код для приведения в стиле C. – bk1e