添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
愤怒的风衣  ·  Re: Re:Error: s0: ...·  1 月前    · 
冲动的树叶  ·  How to convert ...·  3 月前    · 
老实的电池  ·  小形尚弘_百度百科·  4 月前    · 

完全可以 . . . .

可能有不少人对Delete删除空指针的用法不屑一顾 , 但在实际运用当中 ,

却有不少人会犯类似的错误 , 最典型的如下:

if(pMyClass) //这里, pMyClass是指向某个类的指针 . .
{
delete pMyClass ;
}
他们往往先判断一下指针是否为空 , 如果不为空 , 说明没有被删除 ,

于是清空这个指针 . . .

出发点和逻辑思维是好的 , 但是却毫无必要 . . .

因为实际上delete 本身会自动检查对象是否为空 .如果为空 , 就不做操作 . .

所以直接用delete pMyClass 就可以了 . . .

删除空指针当然也是同样道理 . .

1. delete NULL 是没有问题的

char *p = NULL;

delete p;

2:delete栈上的空间是不行的

char *p = "1234";

delete p;

2. char *p = new char;
delete p;
delete p;  // 不能删除两次,第一次delete p之后,p的地址并不是空,同一块内存释放两次是有问题的

3. 最好的风格是:
if(pMyClass)  //这里, pMyClass是指向某个类的指针 . .
{
delete pMyClass ;
pMyClass = NULL;  // 这句不能少
}
因为这段代码在一个函数中,避免函数被调用两次而引起问题

完全可以 . . . .可能有不少人对Delete删除空指针的用法不屑一顾 , 但在实际运用当中 , 却有不少人会犯类似的错误 , 最典型的如下:if(pMyClass) //这里, pMyClass是指向某个类的指针 . .{   delete pMyClass ;} 他们往往先判断一下指针是否为空 , 如果不为空 , 说明没有被删除 , 于是清空这个指针 . . .出发点和逻... 以上代码,因为指向的内存已经被释放,导致后面的调用失效,这种情况导致程序崩溃的原因会非常难找,而且出错的位置很难定位,开发时往往还容易遇到很多这种情况。 那么 delete 到底做了什么动作呢? delete 指针只是释放了那个指针原本所指的内存而已,并没
C++ 标准规定: delete 空指针 是合法的,没有副作用。所以我们在 Delete 指针后赋值为NULL或0是个好习惯。对一个非 空指针 delete 后,若没有赋NULL,若再次 delete 的话有可能出现问题。 int *ptr = new int(3); delete ptr; ptr = NULL; 可以看出 delete 是释放指针指向的内存,并不是指针本身所占有的内存。所以 delete 后,指针的还是指向那块区域,并未清0,所以如果下次用到,就会发生xxx空间 不能 访问的异常。以后 delete 后要赋值为空。
C++ delete 指针前不用进行指针是否为空的判断,因为 delete 的实现已经做了这件事情!     使用 delete delete 已释放的指针是一个严重的错误,所以要在 delete 完一个指针后手动把它置空! 因为 delete 空指针 是安全的。     以下是Bjarne Stroustrup's C++ Style and Technique FAQ 的  Why does
在 C 语言 ,没有 new 和 delete 这两个关键字。它们是 C++ 的关键字,用于动态分配和释放内存。 在 C++ ,new 和 delete 的用法如下: 1. 动态分配内存 使用 new 关键字动态分配内存,语法如下: ``` c++ int *ptr = new int; // 分配一个 int 类型的内存空间 这里,ptr 指向一个新分配的内存空间,它的大小为一个 int 类型的大小。如果分配失败,则抛出 bad_alloc 异常。 2. 动态分配数组 使用 new 关键字动态分配数组,语法如下: ``` c++ int *ptr = new int[10]; // 分配一个包含 10 个 int 类型元素的数组 这里,ptr 指向一个新分配的数组,它的大小为 10 个 int 类型元素的大小。如果分配失败,则抛出 bad_alloc 异常。 3. 释放内存 使用 delete 关键字释放动态分配的内存,语法如下: ``` c++ delete ptr; // 释放 ptr 指向的内存空间 这里,ptr 指向一个动态分配的内存空间,使用 delete 关键字将其释放。如果指针为空,则不执行任何操作。如果释放一个非动态分配的内存空间,则行为未定义。 4. 释放数组 使用 delete [] 关键字释放动态分配的数组,语法如下: ``` c++ delete [] ptr; // 释放 ptr 指向的数组 这里,ptr 指向一个动态分配的数组,使用 delete [] 关键字将其释放。如果指针为空,则不执行任何操作。如果释放一个非动态分配的数组,则行为未定义。