#include <iostream>
using namespace std;
int main()
{
int *p = new int[4];
delete p;
if(p != NULL)
{
cout << “YES” << endl;
}
return 0;
}
以上一段代码中,无论是delete p;还是delete []p;都无法使p == NULL成立,怎么才能使p成为NULL?谢谢
using namespace std;
int main()
{
int *p = new int[4];
delete p;
if(p != NULL)
{
cout << “YES” << endl;
}
return 0;
}
以上一段代码中,无论是delete p;还是delete []p;都无法使p == NULL成立,怎么才能使p成为NULL?谢谢
解决方案
5
malloc和free
new和delete
相似
借和还
而不相似
创建和销毁
你原来记在账本上的账还了,莫非每次还费劲将其用橡皮擦掉吗?
new和delete
相似
借和还
而不相似
创建和销毁
你原来记在账本上的账还了,莫非每次还费劲将其用橡皮擦掉吗?
7
delete p; p = NULL;
7
只能赋值为NULL,delete后不是NULL,本人记得new之后自动赋值为NULL(vs2015好像是这样的)
7
delete 并不负责让p等于NULL
要让p等于NULL得本人写:p=NULL;
或本人写个宏代替
要让p等于NULL得本人写:p=NULL;
或本人写个宏代替
7
建议您加一句【p=NULL;】
7
delete后的指针需要本人手动置空