这是一个关于数据结构的问题

数据结构中的不定长串,申请空间,用的是malloc函数,我好奇怪的,为啥不用new char[长度]呢,我不太明白,这两种动态申请空间方式的不同之处。

这块可以看看 new 和 malloc 的区别:

new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。
  自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。

详细参考 https://www.cnblogs.com/engraver-lxw/p/8600816.html

1、malloc与free是c++/c语言的标准函数,new/delete是C++的运算符。
2、new/delete其实底层也是执行的malloc/free,但new和delete在对象创建的时候会自动执行构造函数,
对象消亡之前会自动执行析构函数,所以new/delete比malloc/free更加智能
3、new返回指定类型的指针,并且可以自动计算出所需要的大小,malloc必须用户指定大小,并且默然返回类型为
void*,必须强行转换为实际类型的指针。