• 动态分配内存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管理动态内存。

  • 相关阅读:
    linux常用命令
    Win10正式版快捷键大全,Win10快捷组合键汇总
    cmd命令大全
    Wordpress目录结构
    dedecms目录结构,非常全
    wordpress文件系统结构
    WordPress数据库及各表结构
    网站跳转代码的实现途径
    主机屋----常用程序安装链接数据库教程
    CMS问答错误提示 ----------Deprecated: Function set_magic_quotes_runtime() is deprecated in D:wwwrootxianfanetwwwrootaskincludecommon.inc.php on line 15
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/3554062.html
Copyright © 2020-2023  润新知