c++,为什么可以delete空指针,不可以delete野指针 [问题点数:5分,结帖人u012967494]

Bbs1
本版专家分:0
结帖率 100%
Bbs4
本版专家分:1567
Bbs2
本版专家分:396
Blank
GitHub 绑定GitHub第三方账户获取
Bbs5
本版专家分:3718
Blank
蓝花 2014年8月 C/C++大版内专家分月排行榜第三
Bbs6
本版专家分:8180
Blank
蓝花 2014年9月 C/C++大版内专家分月排行榜第三
Bbs3
本版专家分:734
Bbs8
本版专家分:33509
Blank
黄花 2014年7月 C/C++大版内专家分月排行榜第二
2014年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2014年10月 C/C++大版内专家分月排行榜第三
2014年4月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:30
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs2
本版专家分:115
指针指针一样么?
<em>c</em>har *q; <em>c</em>har *p; p->NULL; //野<em>指针</em>和<em>空</em><em>指针</em>(p和q)一样么,不一样的话有什么区别?
C++ 使用delete删除指针
众所周知,最开始我们用new来创建一个<em>指针</em>,那么等我们用完它之后,一定要用<em>delete</em>将该<em>指针</em>删掉。但是,值得注意的是,难道就仅仅是删除这个<em>指针</em>这么简单的么?下面,我们用一个程序来说明这个问题:   #in<em>c</em>lude 02 using namespa<em>c</em>e std; 03
删除一个指针之后要置为NULL
删除一个<em>指针</em>之后可不要就跟着悲剧了啊……       众所周知,最开始我们用new来创建一个<em>指针</em>,那么等我们用完它之后,一定要用<em>delete</em>将该<em>指针</em>删掉。但是,值得注意的是,难道就仅仅是删除这个<em>指针</em>这么简单的么?下面,我们用一个程序来说明这个问题: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1
C++中delete指针后,要将其赋值为NULL的具体原因
<em>delete</em><em>指针</em>后,只是释放了<em>指针</em>指向的内存<em>空</em>间,但是<em>指针</em>还在,并且指向之前的地址。 举个例子: #in<em>c</em>lude &amp;lt;iostream&amp;gt; using namespa<em>c</em>e std; int main() { int *p=new int; *p=3; <em>c</em>out&amp;lt;&amp;lt;&quot;将3赋给p的地址后,<em>指针</em>p读取的值:&quot;&amp;lt;&amp;lt;*p&amp;lt;&amp;lt;end...
C++ 中delete指针
今天写了一些代码给同事review的时候,同事指出我有一个地方对<em>空</em><em>指针</em><em>指针</em>的判断是不必要的。记录在此作为提醒。 局部的代码是这样的 if(fail) <em>c</em>ontinue; <em>delete</em> mat<em>c</em>hes; mat<em>c</em>hes = 0; return <em>c</em>ontext->getItemFa<em>c</em>tory()-><em>c</em>reateBo
我真是孤陋寡闻了,今天才知道NULL指针是可以直接delete
以前一直以为得先判断非<em>空</em>再<em>delete</em>,貌似当初学的时候老师给的示例代码也是先判<em>空</em>滴,还记得有个曾被广泛使用的宏 #define SAFE_DELETE(p) {if (p) <em>delete</em> p;} 话
C语言指针越界与野指针
野<em>指针</em> 1,<em>指针</em>变量未初始化 2,<em>指针</em>变量直接释放,没有置NULL 3,<em>指针</em>变量超越了其指向变量的作用范围,这种情况下,其所指向的变量已经不存在,而我们认为对<em>指针</em>进行操作依然指向该变量,这种情况危害最大。 如果对野<em>指针</em>进行了操作,那么很有可能造成不可预计的后果,因为你不知道野<em>指针</em>指向的内存区域的具体情况。 野<em>指针</em>不做过多的介绍,要通过养成良好的编程习惯,尽量避免野<em>指针</em>的存在。
什么是野指针?应该如何避免?
什么是野<em>指针</em>?应该如何避免? 野<em>指针</em>:指向不确定地址的<em>指针</em>变量。(即没有初始化)
指针 和 悬指针(引用)
野<em>指针</em>:未初始化的<em>指针</em>,其<em>指针</em>内容为一个垃圾数。 悬<em>空</em><em>指针</em>:<em>指针</em>正常初始化,曾指向过一个正常的对象,但是对象销毁了,该<em>指针</em>未置<em>空</em>,就成了悬<em>空</em><em>指针</em>。 int main() { int *p; // <em>指针</em>未初始化,此时 p 为野<em>指针</em> int *pi = nullptr; { int i = 6; pi = &amp;amp;i; // 此时 pi...
怎么判断一个指针是否为野指针
这类似错误真是防不胜防啊
函数返回导致 指针变成野指针?
大家好! 我在写B树删除操作的时候 遇到了一个奇怪的BUG, SwapOutPage 通过传t和pbl<em>指针</em>调用 swapOne 然后t<em>指针</em>在swapOne函数里好好的,到这个函数的 有大括号也还是好的
Q5:野指针是什么?
野<em>指针</em>。
C野指针简单理解
首先,野<em>指针</em>不能理解为指向NULL的<em>指针</em>。在编程中,都会对<em>指针</em>变量进行if判断,一旦发现了是NULL都会立即报错或者返回。因此NULL<em>指针</em>危险性不会很大。 野<em>指针</em>,应该理解为指向一个不合法地址的<em>指针</em>,
【C语言】传指针和解引用,野指针指针
一个函数的改变要影响另一个函数需要两个条件: 1、传<em>指针</em>。 2、解引用。 通过交换a和b数值的实例来说明其重要性: 在主函数中输入a和b的值;int a = 10;int b = 20;预期输出结果为a = 20;b = 10。 1、 明显与预期结果不符。原因:没有传<em>指针</em>! 2、 具体操作为: 也与预期结果不符。原因:没有解引用。 3、 与预期相符,多测试几组有代表性的数...
指针的定义和避免
1.我们知道在程序中使用了一个野<em>指针</em>,会引起程序出错,造成段错误。下面我举一个例子指出野<em>指针</em> #in<em>c</em>lude int main() { <em>c</em>har *str; printf("input a str\n"); s<em>c</em>anf(" %s", str); printf("%s\n", str); return 0; } 下面我对*str进行赋值,
如何判断指针是否有效的问题。
我有一个工作线程,需要接受外部消息,消息分为两种,一种是带结构体参数的,第二种带的参数是常数, 我每次收到消息后会解析结构体,如果是第二种没有带结构体参数的消息,会崩溃。 UINT Class::Th
C++判断指针是否为
我有两个类,A类调用B类,在A类里声明 B* b; 在函数里使用的时候 if(b) { ... } 正常情况下,在我没有new一个新实例之前,这段if是应该不跑的,但是我目前发现b=0X<em>c</em>d<em>c</em>d<em>c</em>d<em>c</em>
指针与野指针
1.<em>空</em>类型<em>指针</em> 首先什么是<em>空</em>类型呢,<em>空</em>类型就是void,自然,<em>空</em>类型<em>指针</em>就是void * 2.<em>空</em>类型<em>指针</em>的作用 void * 可以指向任何类型对象的地址,表示这是一个<em>指针</em>,和地址值有关,但不知道存储在此地址上的对象的类型,所以在取<em>空</em>类型<em>指针</em>所指向的值的时候,应将<em>空</em>类型<em>指针</em>转换为对应的<em>指针</em>类型 int a = 10; <em>c</em>har b = 'a'; float <em>c</em> = 12.0; void...
不小心产生野指针的3种情况
野<em>指针</em>的危害: 野<em>指针</em>不会被你检测到 假如一个<em>指针</em>使用释放后, 没有置为NULL, 那么他还是有指向的 很长时间后, 我们不小心用到这个<em>指针</em>,对其进行判断 if(NULL != p) { ... } 这种方式知识看似进行了检查,对野<em>指针</em>来说 ,实则是无用的检查 很容易产生错误,所以我们要对野<em>指针</em>产生的几种情况详细了解,避免野<em>指针</em>的产生 /* 野<em>指针</em> ...
什么方法可以判断指针是否有效?
什么方法可以判断<em>指针</em>是否有效?
指针的判别 - 学自另一个项目组
公司另一个项目组的同事,昨天做了讲座:一个野<em>指针</em>的处理方案。 先看一个典型的野<em>指针</em>: #in<em>c</em>lude #in<em>c</em>lude using namespa<em>c</em>e std; //=========================================================== <em>c</em>lass Player { string _name; publi<em>c</em>: Player(<em>c</em>on
指针出现的三种情况
昨天面试被问到“你了解野<em>指针</em>吗”,我的回答是“野<em>指针</em>就是没有初始化的<em>指针</em>,这样的<em>指针</em>会随机指向一块内存,野<em>指针</em>会对系统造成破坏(造成内存泄漏)”。面试官又问到,“为什么会有野<em>指针</em>这个概念?”。我只是回答了”<em>指针</em>没有初始化就会变成野<em>指针</em>“。 事实上野<em>指针</em>出现的情况有三种: 1、<em>指针</em>变量未初始化 2、<em>指针</em>释放之后未置<em>空</em> 3、返回指向栈内存的<em>指针</em> 我们如何避免野<em>指针</em>呢?做法如下: ①定义一个...
delete 指针的问题。很着急。希望解答下
std::ve<em>c</em>tor m_Items; for(size_t i=0; iRequestId
c++中delete与NULL的效果
对一个<em>指针</em>来说,使用<em>delete</em>与NULL的效果,前者是释放<em>指针</em>指向的内存<em>空</em>间,而后者是释放<em>指针</em>所在的内存。我的这种看法对吗?求高手指导
什么是野指针
什么是野<em>指针</em>?   一个母亲有两个小孩(两个<em>指针</em>),一个在厨房,一个在卧室,(属于不同的代码块,其生存期不同)母亲让在厨房的小孩带一块蛋糕(<em>指针</em>指向的对象)给在卧室的小孩,这样在卧室的孩子才肯写作业。但这个在厨房的小孩比较淘气,他在走出厨房时自己将蛋糕吃了,没能带出来。而在卧室的没有吃到蛋糕,所以不肯完成他的作业。结果母亲却不知道卧室的孩子没有吃到蛋糕,还以为作业完了。结果第二天她就被老师召唤到
C++指针delete后还要置为null
众所周知,最开始我们用new来创建一个<em>指针</em>,那么等我们用完它之后,一定要用<em>delete</em>将该<em>指针</em>删掉。但是,值得注意的是,难道就仅仅是删除这个<em>指针</em>这么简单的么?下面,我们用一个程序来说明这个问题:[<em>c</em>pp] view plain <em>c</em>opy#in<em>c</em>lude &amp;lt;iostream&amp;gt;  using namespa<em>c</em>e std;  int main()   {      int *p=new in...
[c++] delete 只有声明没有定义的指针时遇到的问题
今天遇到这样一个问题: <em>c</em>lass AParent 有一个成员 BParent* ptr 初始化为 nullptr <em>c</em>lass AChild 作为 AParent 的子类,ptr = new BChild , 其中 BChild 是 BParent 的子类 为了减少编译时的依赖, AParent.h 上面声明了 <em>c</em>lass BParent; 在 AParent.<em>c</em>pp 里面虽然调用了 <em>delete</em>...
C++ 利用set为vector数组去重
#in<em>c</em>lude #in<em>c</em>lude #in<em>c</em>lude using namespa<em>c</em>e std; int main() { ve<em>c</em>tor ve<em>c</em>; ve<em>c</em> = { 1, 2, 3, 4, 8, 9, 3, 2, 1, 0, 4, 8 }; set st(ve<em>c</em>.begin(), ve<em>c</em>.end()); ve<em>c</em>.assign(st.begin(), st.end());
进程 线程 通信
Linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(so<em>c</em>ket) Linux线程间通信:互斥量(mutex),信号量,条件变量 Windows进程间通信:管道、消息队列、共享内存、信号量 (semaphore) 、套接字(so<em>c</em>ket) Windows线程间通信:互斥量(mutex),信号量(semaphore)、临界区(<em>c</em>riti<em>c</em>al se<em>c</em>tion)、事件(even...
进程ipc和线程ipc
每个进程有自己的地址<em>空</em>间。两个进程中的地址即使值相同,实际指向的位置也不同。进程间通信一般通过操作系统的公共区进行。 同一进程中的线程因属同一地址<em>空</em>间,可直接通信。 不仅是系统内部独立运行的实体,而且是独立竞争资源的实体。 线程也被称为轻权进程,同一进程的线程共享全局变量和内存,使得线程之间共享数据很容易也很方便,但会带来某些共享数据的互斥问题。 许对程序为了提高效率也都是用了线程来编写。 父子进...
指针,野指针
<em>指针</em>:<em>指针</em>是什么?   <em>指针</em>是一个变量,它就是一个地址。它所占的<em>空</em>间是四个字节(32位的操作系统);   数组的名字就是一个<em>指针</em>常量,常量是不能改变的;   int *p;   p:<em>指针</em>的变量所对应的<em>空</em>间值是指是指分配到<em>空</em>间里面的值; *p:<em>指针</em>所指向的<em>空</em>间的值是指<em>指针</em>所分配里面<em>空</em>间里的值(地址)的所对应的<em>空</em>间的值;    野<em>指针</em>:是指<em>指针</em>随机指向内存中的内存,导致内存的泄漏;
c/c++:内存泄露和野指针的概念
内存泄漏  用动态存储分配函数动态开辟的<em>空</em>间,在使用完毕后未释放,结果导致一直占据该内存单元,不能被任何程序再次使用,直到程序结束。即所谓内存泄漏。    注意:内存泄漏是指堆内存的泄漏。  简单的说就是申请了一块内存<em>空</em>间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个<em>指针</em>指向它,那么这块内存就泄露
c++ C6011 取消对 NULL 指针“L”的引用
-
指针理解和处理
<em>指针</em>是个很强大的工具,可是正因为它太强大,所以要操作它不是件易事。操作不当造成的野<em>指针</em>,甚至会引起系统死机等比较严重的后果。   如果程序定义了一个<em>指针</em>,就必须要立即让它指向一个我们设定的<em>空</em>间或者把它设为NULL,如果没有这么做,那么这个<em>指针</em>里的内容是不可预知的,即不知道 它指向内存中的哪个<em>空</em>间(即野<em>指针</em>),它有可能指向的是一个<em>空</em>白的内存区域,可能指向的是已经受保护的区域,甚至可能指向系统的关键内
指针怎么会出问题呢,
-
C++进阶与拔高(九)(C++内存管理)(智能指针与内存泄漏)
第四章 C++内存管理        C++内存管理几乎存在于程序设计的方方面面,内存泄漏在每个C++程序中都有可能发生。参考网上大佬的博客,我们在这章对C++内存管理有一个大致的认识。本章包括内存管理,内存泄漏以及内存回收。C++测试岗位和开放岗位的面试很看重这一部分,因此很有必要说一下。本章讲解的内容均来自于博客:        http://<em>c</em>nblogs.<em>c</em>om/qiubole/ar<em>c</em>...
C++两个 delete 后的问题 野指针
最近在网上看到两个关于<em>指针</em> <em>delete</em> 后的问题。第一种情况:1 2 3 int* p = new int; <em>delete</em> p; <em>delete</em> p;// p为什么能<em>delete</em>两次,而程序运行的时候还不报错。 第二种情况:1 2 3 int* p = new int ; <em>delete</em> p; *p = 5; //<em>delete</em>后对*p进行再赋值居然也可以(他的平台上运行并没有引发什么错误)?...
指针和野指针有什么区别?
野<em>指针</em>:野<em>指针</em>指,访问一个已删除或访问受限的内存区域的<em>指针</em>,野<em>指针</em>不能判断是否为NULL来避免。产生的原因1、<em>指针</em>变量未初始化化。<em>指针</em>变量默认的值不是NULL,而是随机指。                  2、free/<em>delete</em>的<em>指针</em>没有置为<em>空</em>。free/<em>delete</em> 只是释放<em>指针</em>指的内存<em>空</em>间,并没有把<em>指针</em>本身释放掉                  3、<em>指针</em>指向了栈上的引用或<em>指针</em>。因为栈上...
指针(转帖一篇)
野<em>指针</em>,也就是指向不可用内存区域的<em>指针</em>。通常对这种<em>指针</em>进行操作的话,将会使程序发生不可预知的错误。“野<em>指针</em>”不是NULL<em>指针</em>,是指向“垃圾”内存的<em>指针</em>。人们一般不会错用NULL<em>指针</em>,因为用if语句很容易判断。但是“野<em>指针</em>”是很危险的,if语句对它不起作用。野<em>指针</em>的成因主要有两种:一、<em>指针</em>变量没有被初始化。任何<em>指针</em>变量刚被创建时不会自动成为NULL<em>指针</em>,它的缺省值是随机的,它会乱指一气。所以
navicat 注册码,自己试过,可以的
NAVN-LNXG-XHHX-5NOO拿走,不谢。
关于C++中野指针的说明
野<em>指针</em>,也就是指向不可用内存区域的<em>指针</em>。通常对这种<em>指针</em>进行操作的话,将会使程序发生不可预知的错误。
navicat can not load oci dll,193,126
Navi<em>c</em>at报193,126这两个错误是因为Navi<em>c</em>at的版本和Ora<em>c</em>le客户端的o<em>c</em>i版本不一致,遇到这个坑也是第二次了,记录下。Navi<em>c</em>at装的是x64版本的,o<em>c</em>i用的是x86的就会出现了,所以我后面就把Navi<em>c</em>at换成x86的就OK了,当然或者你把ora<em>c</em>le的o<em>c</em>i换成x64也行。这里提供下Navi<em>c</em>at x86和Ora<em>c</em>le x86的o<em>c</em>i整个客户端套件。 下面附下Navi
Navicat11全系列激活(注册机)
http://www.<em>c</em>nblogs.<em>c</em>om/JKayFeng/p/5937595.html 激活 Navi<em>c</em>at是一款商业软件,所以他仅提供试用。 下面介绍一下通过注册机的方式激活Navi<em>c</em>at 11 for Windows系列软件的方法。 工具:navi<em>c</em>at注册机.7z 提取码:RZC9 1、 安装 Navi<em>c</em>at 11 for Windows 系列原版程序。
指针是什么?悬指针和野指针区别?
野<em>指针</em>是什么? 野<em>指针</em>:指向内存被释放的内存或者没有访问权限的内存的<em>指针</em>。 “野<em>指针</em>”的成因主要有3种: <em>指针</em>变量没有被初始化。任何<em>指针</em>变量刚被创建时不会自动成为NULL<em>指针</em>,它的缺省值是随机的。所以,<em>指针</em>变量在创建的同时应当被初始化,要么将<em>指针</em>设置为NULL,要么让它指向合法的内存。 <em>指针</em>p被free或者<em>delete</em>之后,没有置为NULL; <em>指针</em>操作超越了变量的作用范围。 为了避免出现野...
这个野指针不?为什么可以使用?
#in<em>c</em>lude #in<em>c</em>lude using namespa<em>c</em>e std; <em>c</em>lass A { publi<em>c</em>: void prinfs() { <em>c</em>out<
c++ 调用野指针后的行为
<em>c</em>lass A{ publi<em>c</em>: int i; B* b; A(int _i)i(_i){} void test(){ i++; if(b)b->do_something(); } } int ma
指针(概念,产生原因,危害,避免方法)
思维导图: 1.野<em>指针</em>与垂悬<em>指针</em>的区别: 野<em>指针</em>:访问一个已销毁或者访问受限的内存区域的<em>指针</em>,野<em>指针</em>不能判断是否为NULL来避免 垂悬<em>指针</em>:<em>指针</em>正常初始化,曾指向一个对象,该对象被销毁了,但是<em>指针</em>未制<em>空</em>,那么就成了悬<em>空</em><em>指针</em>。 2.概念 <em>指针</em>指向了一块随机的<em>空</em>间,不受程序控制。 3.野<em>指针</em>产生的原因: 1.<em>指针</em>定义时未被初始化:<em>指针</em>在被定义的时候,如果程序不对其进行初始化的话,它会随机指向一个区...
C语言中的野指针问题
C语言中的野<em>指针</em>问题一、野<em>指针</em>       1、<em>指针</em>变量中的值是非法内存地址,进而形成野<em>指针</em>       2、野<em>指针</em>不是NULL<em>指针</em>,是指向不可用内存地址的<em>指针</em>       3、NULL<em>指针</em>并无危害,很好判断,也很好调试       4、C语言中无法判断一个<em>指针</em>所保存的地址是否合法二、野<em>指针</em>由来      1、局部<em>指针</em>变量没有初始化      2、<em>指针</em>所指向的变量在<em>指针</em>之前被销毁      3、使...
在C++中,能不能delete指针
有如下程序: <em>c</em>har *p = NULL; <em>delete</em> p; 请问以上程序运行会有问题吗?
【C++进阶】C++中的指针和野指针
<em>空</em><em>指针</em>常量,<em>空</em><em>指针</em>,<em>空</em><em>指针</em>赋值区以及野<em>指针</em>及其形成原因
指针概念
“野<em>指针</em>”不是NULL<em>指针</em>,是指向“垃圾”内存的<em>指针</em>。人们一般不会错用NULL<em>指针</em>,因为 用if语句很容易判断。但是“野<em>指针</em>”是很危险的,if语句对它不起作用。 “野<em>指针</em>”的成因主要有两种: (1)<em>指针</em>变量没有被初始化。任何<em>指针</em>变量刚被创建时不会自动成为NULL<em>指针</em>,它的缺省值是随机的,它会乱指一气。所以,<em>指针</em>变量在创建的同时应当被初始化,要么将<em>指针</em>设置为NULL,要么让它
什么是野指针
这里面的NULL指的是<em>空</em><em>指针</em> ,不指向任何单元,仅仅表示初始化 ;4.4.1 野<em>指针</em>野<em>指针</em>出现的现象 :1. 定义了以后 ,没有给地址赋值 ;2. 地址释放了以后 ,<em>指针</em>没有指NULL; 避免野<em>指针</em> :1.定义的时候 =NULL;使用前赋值;2. 释放的时候 ;free(p);                     p=NULL; 3. assert(NULL !=p)------函数的入口处 ...
C++删除指针的一个坑
最近使用了项目公共库中看起来很稳定的一个消息队列类(前同事留下的),起初用得还挺好。后来程序中突然出现了内存暴涨的情况,最后定位下来是这个类的问题。随后花了一些时间定位出现问题的代码,其实在DEBUG时都没有找到问题代码,真正找到问题是凭着感觉在一堆代码里揪出了这样一句话:<em>delete</em> (void*)lParam; 灵感突现,这句应该有问题。当时在办公室,不能上网且手里又没有现成的参考资料,于是随
C++指针释放问题
https://blog.<em>c</em>sdn.net/u011473714/arti<em>c</em>le/details/50783850 今天看到了一个问题,其实在项目中也经常遇到<em>指针</em>释放的问题,先看看一个简单的<em>指针</em>释放的问题: **************************************   问题如下: (1)一般在<em>c</em>++类中有成员<em>指针</em>的话,会在类的析构函数里释放(delet...
指针(Dangling pointer)避免方法
什么是悬<em>空</em><em>指针</em>? 一个<em>指针</em>所指的内存被释放后,这个<em>指针</em>就被悬<em>空</em>了。 悬<em>空</em><em>指针</em>的危害? 访问悬<em>空</em><em>指针</em>,结果随机。可能导致程序功能不正常,也可能导致程序崩溃。如果受到影响的是其它功能,问题通常很难定位。 如何避免悬<em>空</em><em>指针</em>? 基本思路:在释放一块内存时,将指向这块内存的<em>指针</em>变量设置为NULL。访问<em>指针</em>变量前,先判断是否为NULL。 进阶:当有多个<em>指针</em>变量都指向同一块内存时,释放这块内存时,需...
谈谈你对野指针的理解?
谈谈你对野<em>指针</em>的理解?   野<em>指针</em>不是NULL<em>指针</em>,是指向“垃圾”内存的<em>指针</em>。即它是随机指向的,系统自动对其初始化。   野<em>指针</em>会造成什么样的后果呢? 最大的问题:它会导致内存泄漏。   什么叫作内存泄漏? 指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
这样会造成野指针么?
<em>c</em>lass obj { private: int a; publi<em>c</em>: obj() { a=10; } obj(int x):a(x) {} }; void temp() { obj* p1=new
C++在delete指针后要赋值为NULL
C++标准规定:<em>delete</em><em>空</em><em>指针</em>是合法的,没有副作用。 所以我们在Delete<em>指针</em>后赋值为NULL或0是个好习惯。对一个非<em>空</em><em>指针</em><em>delete</em>后,若没有赋NULL,若再次<em>delete</em>的话 有可能出现问题。如下代码: 可以看出<em>delete</em>是释放<em>指针</em>指向的内存,并不是<em>指针</em>本身所占有的内存。所以<em>delete</em>后,<em>指针</em>的还是指向那块区域,并 未清0,所以如果下次用到,就会发生xxx<em>空</em>间不
关于野指针的一些问题与总结
void Test(void){<em>c</em>har *str = (<em>c</em>har *) mallo<em>c</em>(100);str<em>c</em>py(str, “hello”);free(str);    if(str != NULL){  str<em>c</em>py(str, “world”);  printf(str);} 请问运行Test函数会有什么样的结果?答:篡改动态内存区的内容,后果难以预料,非常危险。因为free(str);之后,st...
delete 一个NULL地址不会有任何问题
通常,我们new一个对象,就要调用<em>delete</em>释放对象。 如下: int * nCount = new int; <em>delete</em> nCount;      // 正确 如果: int * nCount; <em>delete</em> nCount;      // 错误 因为nCount没有指定内容,所以释放会错误。 再如果: int * nCount = NULL
指针以及c++使用指针注意点
避免野<em>指针</em>的产生“野<em>指针</em>”的成因主要有:1)<em>指针</em>变量没有被初始化。任何<em>指针</em>变量刚被创建时不会自动成为NULL<em>指针</em>,它的缺省值是随机的,它会乱指一气。所以,<em>指针</em>变量在创建的同时应当被初始化,要么将<em>指针</em>设置为NULL,要么让它指向合法的内存。<em>c</em>har *p; //此时p为野<em>指针</em> 2)<em>指针</em>p被free或者<em>delete</em>之后,没有置为NULL,让人误以为p是个合法的<em>指针</em>.<em>c</em>har *p=new <em>c</em>har[1...
如何解决野指针的问题
在一个Frame里有一个函数,该函数想实现释放掉这个Frame,但是调用this->Free()或者<em>delete</em> this之后,虽然该实例被释放了,但是<em>指针</em>仍然指向垃圾内存,如何在Frame里令该<em>指针</em>
c++ 中删除一个 NULL pointer (指针
1. 在 <em>c</em>++ 中删除一个 NULL pointer (<em>空</em><em>指针</em>)是安全的 2. 标准中相关内容如下: "In either alternative, if the value of the operand of <em>delete</em> is the null pointer the operation has no effe<em>c</em>t." 3. 一个有用的宏 #define my_<em>delete</em>(x) {<em>delete</em> x; x = NULL;}4. 更好的方法使用RAii更为优雅的方式是使用 smart poin
预防野指针的几种方法
野<em>指针</em>,又称迷途<em>指针</em>,即指向“垃圾”内存的<em>指针</em>。此时<em>指针</em>指向的内存已被操作系统回收,程序已无法再访问。
指针及其有效的避免方法
野<em>指针</em>的生成及其产生的原因 一,指向不确定地址的<em>指针</em>变量。(即没有初始化)使用野<em>指针</em>易因内存泄露出现段错误。而造成内存泄露的原因有两个: 1,访问了没有权限的内存,如果正确使用<em>指针</em>,系统会给<em>指针</em>分配相应的内存<em>空</em>间, 如果<em>指针</em>指向了的内存不是系统分配的,则判定为没有权限。 2,访问了已经释放的内存。 二,<em>指针</em>p被free或者<em>delete</em>之后,没有置为NULL,让人误以为p是个合法的<em>指针</em>。 ...
指针的3种常见情况
1 .局部<em>指针</em>变量没有被初始化。 int main() { <em>c</em>har *p; str<em>c</em>py(p,"hello world");//p<em>指针</em>是局部变量<em>指针</em>,没有被初始化,所以p<em>指针</em>所指的内存区不确定,也就是p的内容不确定 //所以用str<em>c</em>py给p<em>指针</em>指向的内存区赋值,这个过程也不确定。       p = "hello world"; 将字符串常量 "hello world"的地
delete指针???
在C++中,<em>delete</em>或者<em>delete</em>一个<em>空</em><em>指针</em>会后什么结果吗? int *ptr = 0; <em>delete</em> ptr;
C++new与delete以及指针
初学C++,把一些自己专研的知识记录一下,分享给大家,希望更多人的能看到!
使用delete删除指针
原文:http://blog.sina.<em>c</em>om.<em>c</em>n/s/blog_6405313801013jvg.html 用<em>delete</em>命令处理某个<em>指针</em>,说是把那个<em>指针</em>删除了是不正确的。 <em>delete</em>命令指示释放了那个<em>指针</em>原本所指的那部分内存而已。被<em>delete</em>后的<em>指针</em>p的值(地址值)并非就是NULL,而是随机值。 也就是被<em>delete</em>后,如果不再加上一句p=NULL,p就成了“野<em>指针</em>”,在内存里乱指
删除(delete)指针是安全的=>指针初始化为0或有效内存(new)
-
指针问题,为什么这样不能释放
倒数第二行,将分配的内存的<em>指针</em>赋值为NULL,为什么会报错呢?不解,环境:vs2013+win8 #define _CRT_SECURE_NO_WARNINGS #in<em>c</em>lude #
free 与 delete 区别
1. <em>delete</em> 用于释放 new 分配的<em>空</em>间,free 有用释放 mallo<em>c</em> 分配的<em>空</em>间 2. <em>delete</em> [] 用于释放 new [] 分配的<em>空</em>间 3. <em>delete</em> 释放<em>空</em>间的时候会调用 相应对象的析构函数      顺便说一下new在分配<em>空</em>间的时候同时会调用对象的构造函数,对对象进行初始化,使用mallo<em>c</em>则只是分配内存 4. 调用free 之前需要检查 需要释放的<em>指针</em>是否为
指针产生原因及解决办法
情况一原因 <em>指针</em>变量声明时没有被初始化。解决办法 <em>指针</em>声明时初始化,可以是具体的地址值,也可让它指向NULL。情况二原因 <em>指针</em> p 被 free 或者 <em>delete</em> 之后,没有置为 NULL。解决办法 <em>指针</em>指向的内存<em>空</em>间被释放后<em>指针</em>应该指向NULL。情况三原因 <em>指针</em>操作超越了变量的作用范
指针指针
Person *p = [[Person allo<em>c</em>] init]; /* 只要一个对象被释放了,我们就称这个对象为“僵尸对象” 当一个<em>指针</em>指向一个僵尸对象,我们就称这个<em>指针</em>为“野<em>指针</em>” 只要给一个野<em>指针</em>发送消息就会报错 */ [p release]; // 1-1=0 /* <em>空</em><em>指针</em> nil 0
面试-野指针,悬挂指针
首先说明一点: 指向非法的内存地址(垃圾内存的地址),那么这个<em>指针</em>就是悬挂<em>指针</em>,也叫野<em>指针</em>,意为无法正常使用的<em>指针</em>。 野<em>指针</em>(悬挂<em>指针</em>): 野<em>指针</em>是指向不可用内存区域的<em>指针</em>(非法内存,垃圾内存)。野<em>指针</em>不是NULL<em>指针</em>,是指向“垃圾”内存的<em>指针</em>。人们一般不会错用NULL<em>指针</em>,因为if语句能够判断。但是野<em>指针</em>是很危险的,if不能判断一个<em>指针</em>是正常<em>指针</em>还是野<em>指针</em>。 野指
什么是野指针和内存泄漏?如何避免野指针
内存泄漏:①访问已经释放的内存     ②访问没有权限的内存 野<em>指针</em>:指向内存被释放的内存或者没有访问权限的内存的<em>指针</em>。 “野<em>指针</em>”的成因主要有3种: (1)<em>指针</em>变量没有被初始化。任何<em>指针</em>变量刚被创建时不会自动成为NULL<em>指针</em>,它的缺省值是随机的,它会乱指一气。所以,<em>指针</em>变量在创建的同时应当被初始化,要么将<em>指针</em>设置为NULL,要么让它指向合法的内存。例如 <em>c</em>har *
【linux c】什么是野指针以及如何避免野指针_学习笔记_010
1.首先以一个示例来认识野<em>指针</em>: #in<em>c</em>lude int main() { int * p; s<em>c</em>anf("%d", p); printf("%d\n", * p); return 0; } 该段程序编译并未报任何错误,而运行之后,输入具体值后,报段错误: 2 段错误   为什么会出现段错误? 因为此处定义了一个局部变量
指针,野指针指针,赋值?
bug中最可怕的是野<em>指针</em>,那么问题来了,野<em>指针</em>是什么?是如何产生的?为什么程序员会“忘记”? 昨天调试时,我发现了一个野<em>指针</em>,由此我明白了。 a的值成了乱码,而且g<em>c</em><em>c</em>编译器并没有报错,那么请看下面的代码 #in<em>c</em>lude int fun(int *a) { int i; *a=0;//添加的代码 for(i=0;i<10;i++) (*a)++; return
悬挂指针与野指针
悬挂<em>指针</em>/Dangling Pointers/迷途<em>指针</em>/悬垂<em>指针</em> 野<em>指针</em>/Wild Pointers
什么是野指针?野指针的危害?如何避免野指针
什么是野<em>指针</em>? 野<em>指针</em>是指随机指向一块内存的<em>指针</em> 野<em>指针</em>的危害? 野<em>指针</em>可能会造成内存泄露的危害。(注意:野<em>指针</em>不会一定造成内存泄露,如果该野<em>指针</em>指向的内存刚好是某个变量的地址,那么野<em>指针</em>也能使用这块内存) 如何避免野<em>指针</em>? 我们要在以后养成良好的编码习惯: 1.将没有指向的<em>指针</em>初始化指向NULL(指向NULL的<em>指针</em>不能对他的指向进行修改) 2.当想给一个<em>指针</em>指向的<em>空</em>间赋值时,一定要
毕业设计英文文献下载
本文献适合电子电气自动化计算机机电类等相关专业毕业论文后的英文文献要求! 相关下载链接:[url=//download.csdn.net/download/jsjs316/3634182?utm_source=bbsseo]//download.csdn.net/download/jsjs316/3634182?utm_source=bbsseo[/url]
北大青鸟c#笔试题下载
在一个C#程序中,下面的这段代码,错误的属性操作是( )。 public class Department { private string _name; public Department(string name) { _name = name; } public string Name { get { return _name; } } public int No{get;set;} } //…省略代码 Department dept = new Department("研发部"); 相关下载链接:[url=//download.csdn.net/download/lichao12332109090900/4782551?utm_source=bbsseo]//download.csdn.net/download/lichao12332109090900/4782551?utm_source=bbsseo[/url]
编译原理语法分析 LL1分析代码下载
编译原理 从词法分析器到语法分析器的实现,词法分析器以有穷状态机实现,而语法分析器主要使用LL1算法实现,中间使用了大量的图论算法。 相关下载链接:[url=//download.csdn.net/download/qq_25566833/9976430?utm_source=bbsseo]//download.csdn.net/download/qq_25566833/9976430?utm_source=bbsseo[/url]
相关热词 c#线程阻塞的方法 c#获取文件所在路径 c#mysql添加删除 c# 分段处理 大文件 c#list 头加元素 c# textbox密码 c# 循环 时间间隔 c#判断访问设备 c# sso开源框 c#dataset增加列
我们是很有底线的