malloc与new的区别这里已经总结的很好了
需要补充的是:
1、自定义类对象分配内存
new-delete对自定义类对象分配与释放时,会自动调用其默认构造函数与默认析构函数,而malloc-free则不会
2、释放初始化为NULL的指针,不会报错;但是对其解引用会出错
3、申请内存的头地址包含有该内存块的必要信息(暂且这么认为)
例如,
char* str = new char[100];
//delete str; //error
str++;
delete[] str; //error
char* str = (char*)malloc(sizeof(char)*100);
str++;
free(str); //error