malloc和free必须成对出现,因为malloc开辟的内存空间在堆区,系统在程序结束时不会自动释放,如果程序员自己不手动释放的话就会造成内存泄露(就是有个指针指向一块内存,结果函数一结束,指针被删除了,而那块内存空间还在),那块内存空间就再也找不到了。同样的道理,new开辟的空间也在堆区,你也必须用delete去释放。
如果不free的话,该指针所指定的资源不会被释放,这样会导致内存泄露。说白了,程序不止,内存就只升不降,就这性能的程序你用呀?
恩 必须的 因为 malloc是申请堆栈内存,如果不用free是一种危险的行为