1. delete释放的是使用new请求的内存
2. 为什么一定要释放内存呢?
new和delete一定要配对地使用,否则就会发生内存泄漏。被分配的内存在没有释放前,被分配的内存再也无法使用。如果一直分配内存,而不释放内存,这样程序将会不断的寻找更多内存,导致一系列不可预知的错误。
3. 通过delete释放的是指针指向的内存,而不是指针本省。指针指向的内存被释放后,如果还需要指针,可将指针重新指向另一个新分配的内存块,同时也可以给将但概念地址分配给其他指针使用。
a. 源码:
// Len_delete.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
int main()
{
// 第一次申请指针并分配了内存
int *p = new int;
// 给内存中指定值
*p = 1001;
// 查看内存中的值
printf("p - value: %d, location: 0x%x \n", *p, p);
// 删除指针
delete p;
p = nullptr;
// 第一次申请指针并分配了内存
int *p1 = new int;
// 给内存中指定值
*p1 = 1002;
// 查看内存中的值
printf("p1 - value: %d, location: 0x%x \n", *p1, p1);
// 删除指针
delete p1;
p1 = nullptr;
}
b. 运行结果