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

  • 相关阅读:
    jenkins+jmeter结合使用
    Bean的前身今世&处理器&Aware
    Spring的profile属性
    XML的验证模式
    org.springframework.beans包
    packge-info.java
    字节码解释执行引擎
    invokedynamic指令
    多态方法调用的解析和分派
    运行时栈帧结构
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/3554062.html
Copyright © 2020-2023  润新知