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

  • 相关阅读:
    C#模拟POST表单提交 WebClient
    视频广告屏蔽器(附下载地址)
    SQL Server 不同数据库导入指定数据解决方案
    WinRAR(WinZip)压缩与解压实现(C#版Window平台)
    Visual Studio 扩展包(.vsix)制作
    ORM for Net主流框架汇总与效率测试
    文件删除小助手
    C# 控制台应用程序输出颜色字体[更正版]
    IE与IE内核浏览器的那点事
    where in的sql语句按照指定ID进行排序的解决方法
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/3554062.html
Copyright © 2011-2022 走看看