Je travaille sur une application qui se construit et tourne bien dans Win32. Cependant, en x64, il se construit mais se bloque en cours d'exécution. En regardant le code et en réduisant le problème, si je commente l'appel à la fonction ci-dessous, il fonctionne sans problème. Je construis dans Visual Studio 2008 avec le compilateur C/C++. Toutes les mises à jour ont été installées. Des idées?Crash du programme dans x64, fonctionne très bien dans Win32
EDIT 1 (pour répondre à des commentaires):
Les pointeurs doivent être valides, comme dans Win32, il fonctionne très bien. Aucun code n'est changé et un chemin différent n'est pas pris, à moins que le pointeur ne soit quelque peu modifié parce que son x64 (se penchera sur ceci).
Malheureusement, il n'y a aucune information sur le crash. Dans Windows 7, il dit simplement qu'il cherche une solution au problème, ne trouve rien, et retourne dans l'invite de commande. Dans l'Observateur d'événements, j'ai pu trouver les informations suivantes:
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
EDIT 2 (pour répondre à d'autres commentaires):
a modifié la ligne,
memcpy(v1, v2, 3 * sizeof(double));
information nouvelle erreur a le même code d'exception et le même défaut.
Quel genre d'accident? Ce code semble correct, tant que vous êtes sûr que 'v1' &' v2' sont des pointeurs valides ... –
Une erreur Message? –
Ce code est correct. Votre problème est quelque part dans la chaîne d'appels qui conduit à 'v1' et' v2' ayant les valeurs particulières qu'ils ont dans l'appel qui échoue (probablement dans une arithmétique de pointeur qui suppose implicitement des différences de pointeur de 32 bits ou quelque chose de similaire). Cela mis à part, vous devriez vraiment utiliser 'memcpy()' pour ce genre de chose. –