c++之:new与malloc

#include <iostream>
using namespace std;

void spacealloc_c()
{
    //开辟内存空间---C语言风格
    int *p = (int *)malloc(sizeof(int));
    *p=10;
    if(p!=NULL)
    {
        free(p);
        p=NULL;
    }
    //开辟内存数组---C语言风格
    //开辟内存空间,用于存放数组
    int *q = (int*)malloc(sizeof(int)*10);//有别于new int(10)----此为赋值为10
    printf("new出来的内存数组大小是:%d\n",sizeof(*q));
    for(int i=0;i<10;i++)
    {
        q[i]=i+88;
    }
    for(int i=0;i<10;i++)
    {
        printf("%d\n",q[i]);
    }
    if(q!=NULL)
    {
        free(q);
        q=NULL;
    }
}


void spacealloc_plus()
{
    //开辟内存空间---C++语言风格
    int *p = new int;
    //int *p = new int(10);//表示给新分配的整形变量分配空间,并且赋值为10
    *p=10;
    if (p!=NULL)
    {
        delete p;
        p=NULL;
    }

    //开辟内存空间,用于存放数组
    int *q = new int[10];//有别于new int(10)----此为赋值为10
    printf("new出来的内存数组大小是:%d\n",sizeof(*q));
    for(int i=0;i<10;i++)
    {
        q[i]=i*88;
    }
    for(int i=0;i<10;i++)
    {
        printf("%d\n",q[i]);
    }
    if(q!=NULL)
    {
        delete[] q;
        q=NULL;
    }
}
void main()
{
    spacealloc_c();
    cout<<"====================================="<<endl;
    spacealloc_plus();
    system("pause");
}

c++也可以使用malloc free,然而更c++风格的是new  delete

猜你喜欢

转载自www.cnblogs.com/saintdingspage/p/12013759.html