但是,C程序编写中很容易出现内存泄漏问题。内存泄漏是指在程序运行过程中,一块已经动态分配的内存空间,因程序中某些原因未被释放,导致该程序在运行一段时间后,占用的内存越来越多,直到程序崩溃或系统出现致命错误。
动态数组的内存空间是从堆上分配的,是在执行代码过程中分配的,当程序执行到这些语句时,才为其分配。- 调用free时, 传入指针指向的内存被释放, 但调用函数的指针值可能保持不变, 因为p是作为形参而传递给了函数。
new、delete、malloc、free之间的关系。在 More Effective C++ 中有更为详细的解释:“当 delete 操作符用于数组时,它为每个数组元素调用析构函数,然后调用 operator delete 来释放内存。”