c++ malloc大内存使用实验

//本例中演示了malloc分配大内存并遍历计算,直接操作内存,暴力快速。

//malloc分配的内存比起数组的内存大(数组的长度达到一定的时候会报错)。

//在图像处理等测控仪表等场合有实用价值

//这都还没用并行处理,比如openMP等技术

//在密集计算情况,用c++有无与伦比的优势,

#include <iostream>
int main()
{
    //getchar();//观察内存使用
    const int m = 200000000;//与计算机内存大小和X86/X64有关

    //const int m = 500000000//如果是X64,把上行注释掉,取消本行注释
    void * a = malloc(m*4);//申请内存,因为是整型,所以需要m*4字节
    //void* b = malloc(m * sizeof(int));//上行换成这行更好,申请内存
    int * a1= (int *) a;//强制转换为整型指针,等下还要用
    void* b = malloc(m * 4);//申请内存,因为是整型,所以需要m*4字节
  
    int* b1 = (int*)b;//强制转换为整型指针,等下还要用
    printf("start\n");
  
    for (int i = 0; i <m; i++)
    {
        *a1 = i;
        a1++;   
    }
    a1--;//退回到最后一个,要不然下行跑到非法地址了
    printf("%d\n", *a1);

    a1= (int*)a;//恢复指针,要不然下面的循环中a1跑到非法地址了
    for (int i = 0; i < m; i++)
    {
        *b1 =(*a1)*3 ;
        a1++;
        b1++;
    }
    b1--;//退回到最后一个,要不然下行跑到非法地址了
    printf("%d\n", *b1);
    printf("calc ok\n");
    //getchar();//;//观察内存使用
    free(a);//释放内存
    //getchar();//观察内存使用
    free(b);//释放内存
    getchar();
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值