malloc主要是C语言中的动态内存申请函数,尔new是C++中的动态内存申请函数。
2者的主要区别在于malloc申请的内存未进行初始化,尔new申请的内存已经对其进行了初始化。
在项目中我有几个结构体,其成员包括了QSTring对象,在进行 动态内存申请时,使用malloc导致QString对象无法使用,尔new申请的QString可以使用。malloc作为C语言的函数其并不认识对象结构,顾对QString对象无法进行内存申请,尔new可以,并将调用QString的构造函数将其初始化为空字符串。
经验:写C++程序尽量使用c++提供的函数,写C程序尽量使用C库的函数。同理能使用QT平台提供的类,就尽量不使用自己写的类。