gpt4 book ai didi

c++ - 在64位机器上写32位软件需要注意什么?

转载 作者:行者123 更新时间:2023-11-30 01:31:01 26 4
gpt4 key购买 nike

我正在购买一台舒适的笔记本电脑进行开发,但我唯一可用的操作系统是 64 位 (Win7),现在我基本上知道 64 位有 8 字节整数并且可以使用更多 RAM,大约

我的编程会有所不同(C++,有时是 PHP)但想知道:

  • 我能否构建 32 位可移植的 C++ 应用程序(在 32 位计算机上运行而无需在 32 位虚拟机下构建?)
  • 编写应用程序(转换等)时需要注意的简单问题有哪些

最佳答案

处理器采用 64 位已经有一段时间了。我很困惑为什么人们害怕迁移到 64 位操作系统。 32 位操作系统不能处理超过 3Gb 的 RAM,所以这是我书中进行升级的充分理由!

当您编写代码时,我遇到的需要注意的最大差异是指针的大小!

在 32 位编译程序上,指针通常为 4 个字节。在 64 位编译程序上,指针通常为 8 个字节。

为什么这很重要?

假设您的程序使用套接字将数据结构从一个进程传递到另一个进程。也许服务器进程是 32 位的,而客户端进程是 64 位的。

虽然 struct 在 32 位和 64 位程序中的定义可能相同,但 64 位 exe 将为每个指针保留 8 个字节(并且结构通常包含指向其他结构的指针,如链表等)。

当 32 位 exe 将结构传递给 64 位 exe 时,这可能会导致数据错位。

在(几乎?)所有情况下,进程之间传递指针值无论如何都是无意义的,例如他们的数据无关紧要,可以省略。

因此您可能认为传递指针值是一种不常见的做法 - 但传递结构的简单方法是通过套接字、指针和所有内容 memcpy 其内容!

这是迄今为止我发现的最严重的障碍,当我们的服务器软件是 32 位时,编写 64 位客户端时。

关于c++ - 在64位机器上写32位软件需要注意什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722539/

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