关于delete的用法...

来源:百度知道 编辑:UC知道 时间:2024/05/14 12:02:55
#include <iostream.h>

void main()
{
int *p;
p = new int;
*p = 5;
cout << *p << endl;
delete p;
cout << *p <<endl;
}

这个用法有什么不妥吗?
再输出*p,结果是个大数,没报错。

delete p;
cout << *p <<endl;
这里你已经delete p了, 也就是p所指向的内存已经被释放, 当再次访问p时很容易发生错误.

一般来是, delete p以后立即再次访问p不会出现问题, 因为此时p所指向的内存暂时没有被其他程序或线程利用.此时p俗称为野指针, 野指针的指向是不定的,在程序中相当危险, 很容易造成系统崩溃.

delete p;
int *pInt = new int;
cout<<*p<<endl;
这时就很危险了.

建议delete p以后立即p=null, 防止野指针出现.

delete [dɪ'lit]

vt. 删除
用法如下:
1)delete +宾语 : 把....删除
例句1:
The attack is to wipe out data, to delete flies, or to format the hard disk.
常见的攻击方式是消除数据、删除文件或者格式化硬盘。
例句2:
As you can see below, you can modify, delete and add tags.
如你下面看到的,你可以修改、编辑、删除和添加标签。
2)delete...from.. : 把...从。。中删除
例句1:
Please delete his name from boss's list.
请把他的名字从老板的名单上删除
例句2:
She want to delete that memory from her life.
她想把那段记忆从她的人生中删除。

new出来的东西一定要delete,在delete以后就是个无效地址,所以输出的时候无法估计的数值。如果去往这个地址写入内容基本都会报内存错误。

有 !
你 已经delete了给 p分配的空间,在输出它的内容会出错!<