关于指针的一个不明白的问题。

来源:百度知道 编辑:UC知道 时间:2024/06/19 04:10:57
定义了指针变量,然后后面用了delete函数删除它,书上说这个的作用是释放了这个指针指向的区域,但没有把这个指针变量给释放掉,这是为什么呢?
多谢高手指点!

指针就是一个普通的变量,只不过它的值是一个内存的地址。
指针是32位的,正如你定义了一个long类型的变量。
delete掉的仅仅是指针指向的那块地址的内存。

指针变量是不会被释放掉的,变量被释放,跟内存被释放是不一样
内存被释放后,就无法使用,无法对它进行读写操作了,否则会出错
变量被释放后,也无法对它进行操作了,比如:
main()
{
int i=1;//作用于main函数内
{
int j;//仅仅作用于离它最近的这对大括号内
j=0;//这里可以访问j
}
//j=2;//这里不可以访问,因为j被释放了
}

变量的释放,都是由系统控制的,程序员不需要去放它;
而内存的释放是由程序员控制的

另外,要注意的是:
指针变量指向的内存释放后,最好把指针变量赋值为0
之后再使用它之前,先判断它释放为0,不为0再使用

指针这个变量在你这个函数结束时或者程序结束时会自动释放掉,但是它所指向的内存会在你用delete时释放掉,delete释放的是你申请的内存,不时这个变量

指针就是一个普通的变量,只不过它的值是指向一个内存地址。
指针是32位的,正如你定义了一个int类型的变量。
delete掉的仅仅是指针指向的地址。