c语言编程笔录

首页 >   > 笔记大全

笔记大全

win732位和64位的区别有哪些

更新时间:2023-10-02

Win7系统32位和64位的区别

Win7是微软推出的操作系统,它分为32位和64位版本。32位和64位操作系统的主要区别在于所能处理的内存大小不同。

//32位系统下获取内存大小
#include
using namespace std;
int main(){
    int* p;
    int size = 1;
    while(1){
        try{
            p = new int[size];
            delete[] p;
            size++;
        }catch(exception& e){
            cout<<"Memory size in 32bit system is: "<<(size-1)<<"GB"<

32位操作系统最大能够寻址的内存大小是2^32=4GB,即便物理内存已经超过4GB,但由于每个进程只能寻址4GB,所以并不能充分利用全部物理内存。在32位操作系统下,如果有超过4GB的物理内存,需要使用PAE(Physical Address Extension)技术才能充分利用全部物理内存。

//linux 64位系统下获取内存大小
#include
using namespace std;
int main(){
    long long* p;
    long long size = 1;
    while(1){
        try{
            p = new long long[size];
            delete[] p;
            size++;
        }catch(exception& e){
            cout<<"Memory size in 64bit system is: "<

相对于32位操作系统,64位操作系统可以处理的内存大小要大得多,它最大能够寻址2^64=16EB(1EB=1024PB),超出了目前技术限制的范围,相当于当前内存无限大,可以运行更大、更复杂的程序。

32位和64位操作系统的二进制代码不兼容

除了处理的内存大小有所不同外,32位操作系统和64位操作系统的二进制代码不兼容。由于二进制文件中包含着程序代码、静态数据和动态数据,这就意味着32位程序不能直接在64位操作系统上运行,反之亦然。

//判断操作系统是否是64位
#ifndef _WIN64
    cout<<"32-bit"<

在实际开发中,应该针对特定的操作系统版本,选择对应的编译器和库文件,保证程序能够在特定的操作系统下运行。

32位和64位应用程序安全特性的不同

相对于32位应用程序,64位应用程序具有更好的安全特性。64位操作系统对不正确的指针使用进行了更严格的检查,减少了安全漏洞的出现。因此,使用64位应用程序可以提高系统的安全性。

//查看可执行文件类型
#include
#include
using namespace std;
int main(){
    ifstream file("test.exe");
    char c;
    file.get(c);
    cout<<"Executable file type: "<<(int)c<

在开发64位应用程序时,需要使用合适的编译选项,如/guard:cf和/dynamicbase,才能充分利用64位应用程序的安全特性。

总结

Win7系统32位和64位的区别主要在于处理的内存大小、二进制代码兼容性和安全特性。32位操作系统最大能够处理4GB的内存,64位操作系统最大能够处理16EB的内存,而且它们的二进制代码不兼容。64位应用程序具有更好的安全特性,开发64位应用程序需要使用合适的编译选项。