Я работаю над приложением, которое прекрасно работает и работает в Win32. Тем не менее, в x64, он строит, но вылетает при запуске. Если посмотреть на код и сузить проблему, если я закомментирую вызов нижеприведенной функции, он запускается без проблем.
void vec3_copy (double* v1, const double* v2) {
v1[0] = v2[0]; v1[1] = v2[1]; v1[2] = v2[2];
}
Я строю в Visual Studio 2008 с помощью компилятора C / C ++. Все обновления были установлены. Есть идеи?
РЕДАКТИРОВАТЬ 1 (чтобы ответить на комментарии):
Указатели должны быть действительными, как в Win32, он работает нормально. Никакой код не изменяется, и другой путь не берется, если указатель не несколько изменен, потому что его x64 (рассмотрим это).
К сожалению, информации о сбое нет. В Windows 7 он просто говорит, что ищет решение проблемы, ничего не находит и возвращается в командной строке. В программе просмотра событий мне удалось найти следующую информацию:
Faulting application name: DRR_C.exe, version: 0.0.0.0, time stamp: 0x4b7a1ee1
Faulting module name: DRR_C.exe, version: 0.0.0.0, time stamp: 0x4b7a1ee1
Exception code: 0xc0000005
Fault offset: 0x0000000000003950
Faulting process id: 0x16a4
Faulting application start time: 0x01caaec078a9c84a
Faulting application path: D:\Development\gpu\dev\DRR_C\x64\Debug\DRR_C.exe
Faulting module path: D:\Development\gpu\dev\DRR_C\x64\Debug\DRR_C.exe
РЕДАКТИРОВАТЬ 2 (чтобы ответить больше комментариев):
Изменена строка в,
memcpy(v1, v2, 3 * sizeof(double));
Новая информация об ошибке имеет тот же код исключения и смещение ошибки.