new与malloc的区别struct与class的区别

Posted Linux bsping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new与malloc的区别struct与class的区别相关的知识,希望对你有一定的参考价值。

一、malloc与new的区别

特征new/deletemalloc/free
分配内存的位置自由存储区
内存分配失败返回值完整类型指针void*
内存分配失败返回值默认抛出异常返回NULL
分配内存的大小由编译器根据类型计算得出必须显式指定字节数
处理数组有处理数组的new版本new[]需要用户计算数组的大小后进行内存分配
已分配内存的扩充无法直观地处理使用realloc简单完成
是否相互调用可以,看具体的operator new/delete实现不可调用new
分配内存时内存不足客户能够指定处理函数或重新制定分配器无法通过用户代码进行处理
函数重载允许不允许
构造函数与析构函数调用不调用

二、struct与class的区别

C++中对struct进行了补充,使其可以继承、可以实现多态、可以有静态成员和成员函数。

 那么他与class的区别在哪里呢,其实最本质的区别就在于struct对成员的默认属性是public,而class对成员的默认属性是private。

那么在C++中,什么情况用struct或者class呢,建议存储数据结构集合还是使用struct,如果要表示一类对象的话使用class。

以上是关于new与malloc的区别struct与class的区别的主要内容,如果未能解决你的问题,请参考以下文章

Struct和Class,值类型与引用类型(堆栈简单一提)

malloc/free与new/delete的区别与联系

细说new与malloc的10点区别

C++ malloc 与 new 的区别

C++ malloc 与 new 的区别

细说new与malloc的10点区别