C++ new和malloc的区别及TCP与UDP的区别

236 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

new和malloc的区别

  1. new/delete是C++的关键字,而malloc/free是库函数,new/delete可以进行重载,而malloc/free不行。
  2. new时只需要指定分配对象的类型,而不需要指定分配的空间大小,返回的也是该类型的指针;而malloc时只需要指定空间的大小,无需指定数据类型,返回的是void*泛型指针。
  3. new失败时直接抛出异常,而malloc则是返回NULL。
  4. new时需要先调用malloc,然后调用所分配对象的构造函数进行构造。
  5. new操作符从自由存储区上为对象动态分配内存,malloc函数是从堆上动态分配内存。自由存储区是C++基于new操作符的抽象概念,凡是通过new操作符进行内存申请的,该内存就叫自由存储区。而自由存储区的位置取决于operator new的实现细节。自由存储区不仅可以是堆区,也可以是静态存储区,取决于对new进行重载时在哪里为对象分配内存。

TCP与UDP的区别

  1. TCP是面向连接的,UDP是面向无连接的。
  2. TCP是可靠的,而UDP是不可靠的(尽最大努力交付)。
  3. UDP结构相较为简单(TCP的首部长度有40个字节,而UDP的首部长度只有8个字节)。
  4. TCP是流模式,UDP是数据报模式。
  5. 每一条TCP连接只能点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信。

版本声明:本文为CSDN博主[ufgnix0802]的原创文章。
原文链接:blog.csdn.net/qq135595696…