内存的动态开辟与释放

malloc/free与new/delete

(1)new会抛异常,但是malloc不会抛异常;

(2)new/delete属于操作符,但是malloc/free属于函数;

(3)new申请空间的时候会调用构造函数进行初始化,malloc不会;

    delete释放内存时会调用析构函数,free只是切断了指向关系;

malloc/calloc/realloc

malloc开辟空间时:若找不到,则返回NULL;

calloc:在内存中开辟空间并将其初始化为0;

realloc:重新开辟空间(1)当realloc开辟空间空间不足,找到新空间时:自动将原来指针所指向的内容拷贝到新空间,并且释放原来的空间;(2)当realloc开辟空间且找不到时,原空间不变。

注:动态内存开辟的空间位于堆上;


作者水平有限,若有问题请留言,谢谢!!!

你可能感兴趣的:(其他)