我陷入了一个奇怪的问题。我有一个使用 gyp 项目创建的 exe,并且支持 common.gypi 为 32 位和 64 位 linux 构建 exe。但是,当我为 64 位 linux 构建并在代码中的某个位置调用 memcpy 时,内容会被清零。使用 -m32 标志为 32 位平台构建不会导致此问题。我怀疑头文件可能存在问题,因为项目的头文件对于 32 位和 64 位平台都是通用的。有人可以提供一些指示如何解决这个问题吗?二进制文件是动态链接的,并使用 GLIBC lgcc、lc 和 lm。非常感谢该领域的任何指针。我很乐意提供所需的任何其他信息。谢谢。
更新:一点点代码片段:这是代码的基本片段:
dst->flags = src->flags;
src->b = dst->b;
and few more assignments
memcpy(dst, src, size here is 152);
size of dst is 224 and size of src is 496.
问题是最初复制到 dst 的标志值在调用 memcpy 后变为零。为 32 位构建时的相同逻辑可以正常工作。