linux下C++与windows下C++ 指针分配上的不同.

本文探讨了在Linux和Windows操作系统中,C++指针分配的测试结果。通过实验揭示了不同平台下内存管理的细节,重点对比了两者之间的区别。
摘要由CSDN通过智能技术生成

注 : 这仅仅是我的测试结论:

#include <iostream>

using namespace std;

 

int main(){

        int * i = new int;

        int * i2 = new int;

        cout << i << endl;

        cout << i2 << endl;

        *i = i2 - i;

        cout << *i << endl;

}

[vicky@localhost chapt6]$ g++ pointExap2.cpp

[vicky@localhost chapt6]$ ./a.out

0x8049b58

0x8049b68

4

理解:实际上b68 – b58 = 10.1016进制的,转换为10进制就是16.4表示的是44byte.也就是16.

综合上面2个例子,我的理解是linux2个同类型的数据,在内存中的地址相隔2.5个数据类型的长度.至于为什么是2.5就是避免指针在增加后于同类型的另外个数据内存相同.(错误的推论,正确推论见下.)

 

证明上述推测:

#include <iostream>

using namespace std;

 

int main(){

        double * i = new double(1.0);

        cout << sizeof(*i) << endl;

        cout << "-------" << endl;

        double * i2 = new double(2.5);

        cout << i << endl;

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值