注册 登录
编程论坛 C++教室

delete[]

全世界安静 发布于 2012-08-30 13:52, 373 次点击
int* date=new int[3];
delete[] date;
if(!date) cout<<"date null!\n";

结果未显示,难道delete之后,date不为空值吗?
6 回复
#2
dz7899892012-08-30 14:26
#include <iostream>
using namespace std;
void main()
{
    int* date=new int[3];
    delete[] date;
    if(date)
    {
        cout<<"date null!\n";
    }

}
这样就显示输出信息了
#3
dz7899892012-08-30 14:29
#include <iostream>
using namespace std;
void main()
{
    int* date=new int[3];
    delete []date;
    cout<<date;
    if(date)
    {
        cout<<"date null!\n";
    }

}
date虽然清了  但是地址还在 非0就是真 你可以运行一下看看
#4
dz7899892012-08-30 14:33
你要再将指针赋为空以后才行 不然只是删除指向的对象
#5
rjsp2012-08-30 14:36
delete p 是释放p的值所指示的内存
而非释放p的值本身
#6
Aidoneus2012-08-30 19:26
因为
int* date=new int[3];        
 delete[] date;
 if(!date) cout<<"date null!\n";        // 这段判断语句中加了!非运算符、所以条件反了、应去掉!才能输出。
#7
zhuanjia02012-08-30 23:18
int* date=new int[3];
delete[] date;

delete只释放new申请的空间,而date指针本身指向的地址没变,变成了野指针,所以应该在后面加上date=NULL;
1