zoukankan      html  css  js  c++  java
  • 动态分配内存malloc与free

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    void inv(int *,int );
    
    int main()
    {
        int *p;
        int length,i;
        cout<<"Enter the length you want:";
        cin>>length;
        p=(int *)malloc(sizeof(int )*length);    //malloc的格式
        cout<<"Enter "<<length<<" integers:"<<endl;
        for(i=0;i<length;i++)
        {
            cin>>*(p+i);
        }
        inv(p,length);
        cout<<"The inversed integers:"<<endl;
        for(i=0;i<length;i++)
            cout<<*(p+i)<<" ";
        cout<<endl;
        free(p);                 //释放内存
        return 0;
    
    }
    
    void inv(int* x,int n)
    {
        int tmp,i,j;
        int m=(n-1)/2;
        for(i=0;i<=m;i++)
        {
            j=n-1-i;
            tmp=x[i];
            x[i]=x[j];
            x[j]=tmp;
        }
    }

    其中malloc与free函数为C中的函数,在C++中有new与delete操作,使用new操作动态分配数组内存形式如下:

    new 数据类型[ 元素个数 ],看程序:

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    void inv(int *,int );
    
    int main()
    {
        int *p;
        int length,i;
        cout<<"Enter the length you want:";
        cin>>length;
        p=new int [length];//p=(int *)malloc(sizeof(int )*length);
        cout<<"Enter "<<length<<" integers:"<<endl;
        for(i=0;i<length;i++)
        {
            cin>>*(p+i);
        }
        inv(p,length);
        cout<<"The inversed integers:"<<endl;
        for(i=0;i<length;i++)
            cout<<*(p+i)<<" ";
        cout<<endl;
        delete []p;//free(p);
        return 0;
    
    }
    
    void inv(int* x,int n)
    {
        int tmp,i,j;
        int m=(n-1)/2;
        for(i=0;i<=m;i++)
        {
            j=n-1-i;
            tmp=x[i];
            x[i]=x[j];
            x[j]=tmp;
        }
    }
    

      此语句作用为分配length个元素的内存空间,元素类型是int,并返回0个元素的地址,赋值给p,从而使p指向地0个元素

    malloc和free一般用于简单数据类型的动态内存分配,而对于对象的动态内存分配,则需要利用new和delete,因为在new/delete操作,会调用对象的构造函数/析构函数进行初始化/收尾的工作。在C++中使用malloc与free是为了与C兼容,以为C中只支持malloc与free管理动态内存。

  • 相关阅读:
    学习第五天
    第四天学习
    学习第三天
    学校键盘键位设置
    学习第二天
    fatal error C1902: 程序数据库管理器不匹配;请检查安装解决
    ffmpeg遇到inttypes.h和UINT64_C
    <ZZ>linux yum命令详解
    <ZZ>Linux rpm 命令参数使用详解[介绍和应用]
    转:Windows下WSH/JS实现SVN服务器钩子脚本阻止提交空日志信息和垃圾文件
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/3554062.html
Copyright © 2011-2022 走看看