Для того, чтобы отловить ошибки усечения указателя в 64 битах, я добавил фрагмент кода, упомянутый здесь , который резервирует нижние 4 ГБ памяти, поэтому объем выделяемых ресурсов превышает 32 бита.В тестовом приложении MFC x64 я сначала вызываю функцию резервирования в InitInstance ().Затем я добавил кнопку, которая просто выполняет следующие действия:
CFileDialog dlg(TRUE);
dlg.DoModal();
Вызов DoModal в конечном итоге приводит к аварийному завершению где-то с помощью стека вызовов в "земле без людей":
> 000000018000163b()
0000000100000024()
0000000000000001()
Это не относится к MFC, посколькутакое же поведение с .NET FileDialog.Я думаю, что это что-то из моих рук, так как фактический fileDialog обнаруживается кратко, а затем вылетает.Похоже на расширение оболочки или что-то в этом роде, но я не могу понять, откуда оно исходит, поскольку стек вызовов не помогает - но я хочу выяснить, могу ли я что-нибудь сделать!
Если я уберу специальноефункция резервирования Я больше не получаю сбои.
Озадачен!