c++ malloc大内存使用实验

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

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

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

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

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

#include
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     {
        *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;
}
 

你可能感兴趣的:(c++语言,visual,studio,c++)