gpt4 book ai didi

c++ - 程序在 x64 中崩溃,在 Win32 中工作正常

转载 作者:太空狗 更新时间:2023-10-29 20:32:16 25 4
gpt4 key购买 nike

我正在开发一个在 Win32 中构建和运行良好的应用程序。但是,在 x64 中,它构建但在运行时崩溃。查看代码并缩小问题范围,如果我注释掉对以下函数的调用,它运行没有问题。

void vec3_copy (double* v1, const double* v2) {
v1[0] = v2[0]; v1[1] = v2[1]; v1[2] = v2[2];
}

我正在使用 C/C++ 编译器在 Visual Studio 2008 中进行构建。已安装所有更新。有什么想法吗?

编辑 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));

新的错误信息具有相同的异常代码和故障偏移量。

最佳答案

它仍然与 memcpy 一起崩溃的事实证实了坏指针的来源在别处,正如预期的那样。

应用有多大?它看起来像是在某处,一个指针被截断为 32 位或以其他方式损坏。您很可能需要花一些时间使用调试器来追踪确切位置。

关于c++ - 程序在 x64 中崩溃,在 Win32 中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com