64位windows系统 int类型内存大小和课本中的差异

今天晚上一位兄弟突然找我,问我sizeof(int*) 的长度是多少,老实说,这个在上学的时候其实就一直在普及,32位是4,64位是8,具体原因就不深入下去了,因为读书的时候基本上用的都是32位windowsXP系统(不得不说有点落后),也从来没在自己的电脑上跑过,这位兄弟问了一下,我自己也没有确认过,所以用sublime打一下,发现结果是4,所以引出了下面的博文

如前言所说,我在sublime敲下了如下代码

#include <iostream>
using namespace std;
int main() {
     int *p;
     long a;  
     cout << sizeof(p) << endl;
     cout << sizeof(a) << endl;
     cin >> a;
     return 0;
}
// output:
4
4

基本上上面的结果超出了我们的预期,兄弟表示他的mac上面的结果是8,所以我们陷入了思考中

我首先怀疑的是我的编译器是不是32位的编译器造成了这个结果的不同,因为之前看过一篇博文介绍出现结果的大小是和编译器决定的,但是我觉得这么比较模糊的答案不是我需要的,我觉得还是需要从系统上面下手,于是发现了这个网址:https://wiki.wireshark.org/Development/Win64

32-bit UN*X platforms, and 32-bit Windows, use the ILP32 data model. 64-bit UN*X platform use the LP64 data model; however, 64-bit Windows uses the LLP64 data model. If you assume that long ints and pointers have the same number of bits, you’re in trouble:

32位的类UNIX 和 32位的 Windows系统采用的数据模型是 ILP32标准,而64位类UNIX系统采用LP64标准,64位Windows系统采用LLP64标准,所以这里64位造成了一定的差异,具体的这些数据模型的解释,我也顺手做一下推荐

http://blog.sina.com.cn/s/blog_57421ff80100c7g1.html

直接看结果类型:http://blog.youkuaiyun.com/wendaotaoa/article/details/9986761

### C++ 中 `setCaption` 未定义标识符的解决方案 在 C++ 编程中,如果遇到 `setCaption` 被标记为“未定义标识符”的错误,通常是因为缺少必要的头文件或者链接库。以下是可能的原因以及对应的解决方法: #### 可能原因一:缺失 EGDK 或 EGE 图形库的支持 EGE 是一个轻量级的跨平台图形库,在某些情况下需要显式引入其头文件并配置编译器环境才能正常使用其中的功能函数,比如 `initgraph()` `setcaption()`。 要解决问题,请确认以下几点: - **确保已安装 EGE 库** 如果尚未安装该库,则需下载并正确配置到项目环境中[^1]。 - **包含正确的头文件** 在源代码顶部加入如下声明语句以加载所需功能模块: ```cpp #include <graphics.h> ``` - **链接动态/静态库文件** 对于 Windows 平台下的 MinGW 或 MSVC 编译工具链而言,还需要额外指定连接特定版本的运行时支持库 (e.g., libegedll.a),具体操作取决于所使用的 IDE 设置方式[^2]。 #### 示例修正后的完整代码片段 下面展示了一个经过调整能够正常工作的例子程序,它设置了自定义窗口标题 “My Custom Title”。 ```cpp #include <graphics.h> // 引入 EGE 的核心绘图组件接口定义 using namespace std; int main() { initgraph(400, 300); // 初始化一个大小为 400x300 像素的新窗口 setcaption("My Custom Title"); // 修改当前活动窗口显示名称 // 此处调用了 setcaption 函数完成设定工作 cout << "Window created successfully!" << endl; system("pause"); closegraph(); // 关闭之前打开过的所有图形设备资源释放内存空间 return EXIT_SUCCESS; } ``` #### 可能原因二:拼写错误或大小写敏感度差异 需要注意的是,不同操作系统对于命令名可能存在一定的兼容性区别对待现象。例如 Linux/macOS 下一般遵循 POSIX 标准严格区分字母大小写的习惯;而相比之下 WinAPI 则相对宽松一些允许一定程度上的自由发挥。因此建议开发者始终按照官方文档给出的标准形式书写相关 API 名称以防万一引发不必要的麻烦。 另外值得注意的一点在于部分教材资料里可能会误印成其他类似的表述如 'SetCapTION()' 等非标准格式,这同样会造成解析失败的结果出现提示找不到对应的方法入口地址等问题发生。 --- ### 总结注意事项 综上所述,当遭遇此类报错情况时可以从以下几个方面入手排查定根本诱因所在之处: 1. 验证是否遗漏导入关键依赖项; 2. 检查实际输入参数列表与预期签名是否存在偏差; 3. 排除潜在的手动录入失误干扰因素影响最终判断结论准确性。 通过以上分析处理流程即可有效规避大部分常见陷阱从而顺利推进后续开发进程环节顺利完成目标任务达成既定成果展现价值体现意义非凡!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值