之前一直以为 ,如果对于数组用delete删除,会造成内存泄露,但是实践证明,并不会造成内存泄漏,开始疑惑,这里总结下。
int* a=new int[10];
delete a; // 可以删除10个内存空间,表示为无法读取内存
delete [] a; //结果一致,内存空间被删除
delete [] a;
delete a;
new和delete运算符提供了一种比自动变量和静态变量更灵活的办法。
new运算符在自由存储空间(或堆)上创建变量。
如果使用new之后,没用调用delete,会怎么样?
如果没用调用delete,则即使包含指针的内存由于作用域规则和对象生命周期的原因而被释放,在自由存储空间(堆)上动态分配的变量和结构也将继续存在。
实际上,将会无法访问自由存储空间中的结构,因为指向这些内存的指针无效。导致内存泄漏。
被泄露的内存在程序的整个生命周期内都不可使用;这些内存被分配出去,但无法收回。
程序的生命周期:暂时理解为程序的开始至结束之间。