【C++】复习2(C/C++的区别、动态内存(new、malloc的区别))

19 篇文章 3 订阅

一、C/C++的区别

1、C是面向过程的语言    C++是面向对象的语言
2、输入输出方式不同
3、C++带有默认的函数、函数重载、inline内联函数,这些C++都不支持
4、C++可以实现面向对象的代码,具有强大的设计模式,如单例模式、工厂模式、观察值模式,可以更好的进行模块化设计:做到高内聚、低耦合
5、强制类型转换不同
    在C语言中:使用()小括号里面加类型进行类型强转
    在C++中:C++有自己的四种类型强转方式:const_cast、static_cast、reinterpret_cast和dynamic_cast
6、在动态内存管理上
    C语言通过malloc和free来分配和释放内存。
    C++通过new和delete来管理堆内存。  
7、C++不仅支持指针还支持更安全的引用

 

二、new和malloc的区别

 

C/C++中的开辟内存

C语言中
    开辟:
        int *cp = (int *)malloc(sizeof(int )*n);
    释放:
        free(cp);
    开辟二维数组:
        int **parr = (int**)malloc(sizeof(int *)*n);
        for(int i = 0;i < 10;i++)
        {
            parr[i] = (int*)malloc(sizeof(int)*n);
        }
        释放:
            for(int i = 0;i<10;i++)
            {
                free(parr[i]);
            }
            free(parr);
C++中:
    开辟:
        int *p = new int (n)  //(初始化)
    释放:
        delete p;
        
    开辟一维数组:
        int *pp = new int[10]();
        delete []pp;
        
    开辟二维数组:
        int **cpparr = new int*[10];
        for(int i = 0;i<10;i++)
        {
            cpparr[i] = new int[10];
        }
        释放:
            for(int i = 0;i<10;i++)
            {
                delete[]cpparr[i];
            }
            delete[]cpparr;

 

new的底层调用malloc

new 内部调用顺序:

new  ----》operator  new   ----》malloc ----》 构造函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值