📄 ptrafterfree.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"><!-- This collection of hypertext pages is Copyright 1995-2005 by Steve Summit. --><!-- Content from the book "C Programming FAQs: Frequently Asked Questions" --><!-- (Addison-Wesley, 1995, ISBN 0-201-84519-9) is made available here by --><!-- permission of the author and the publisher as a service to the community. --><!-- It is intended to complement the use of the published text --><!-- and is protected by international copyright laws. --><!-- The on-line content may be accessed freely for personal use --><!-- but may not be published or retransmitted without explicit permission. --><!-- --><!-- this page built Sat Dec 24 21:47:45 2005 by faqproc version 2.7 --><!-- from source file malloc.sgml dated Wed Dec 21 13:50:44 2005 --><!-- corresponding to FAQ list version 4.0 --><html><!-- Mirrored from c-faq.com/malloc/ptrafterfree.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:58:51 GMT --><head><meta name=GENERATOR content="faqproc"><title>Question 7.21</title><link href="useafterfree.html" rev=precedes><link href="local.html" rel=precedes><link href="index.html" rev=subdocument></head><body bgcolor="#ffffff"><a href="useafterfree.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="local.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../index-2.html"><img src="../images/buttontop.gif" alt="top/contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><hr><p><!-- qbegin --><h1>comp.lang.c FAQ list<font color=blue>·</font><!-- qtag -->Question 7.21</h1><p><font face=Helvetica size=8 color=blue><b>Q:</b></font>Why isn't a pointernullafter calling<TT>free</TT>?<br>How unsafe is it to use(assign, compare)a pointer value after it's been freed?</p><p><hr><p><font face=Helvetica size=8 color=blue><b>A:</b></font>When you call <TT>free</TT>,the memory pointed to by the passed pointer is freed,but the value of the pointer in the callerprobablyremains unchanged,becauseC's pass-by-valuesemanticsmean that called functionsnever permanentlychange the values of their arguments.(See also question <a href="../ptrs/passptrinit.html">4.8</a>.)</p><p>A pointervaluewhich has been freed is, strictly speaking, invalid,and <em>any</em> use of it,even if it is not dereferenced(i.e. even ifthe use of it is aseemingly innocuousassignment or comparison),can theoretically lead to trouble.(Wecan probably assume thatas a quality of implementation issue,most implementations willnot go out of their wayto generate exceptionsfor innocuous uses of invalidpointers,but the Standard is clearin saying thatnothing is guaranteed,andthere are system architecturesfor whichsuchexceptionswould be quite natural.)</p><p>When pointer variables(or fields within structures)are repeatedly allocated and freed within a program,it is often useful to set them to NULLimmediately after freeingthem,to explicitly record their state.</p><p>References:ISO Sec. 7.10.3<br>Rationale Sec. 3.2.2.3<br></p><!-- aend --><p><hr><a href="useafterfree.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="local.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../questions.html"><img src="../images/buttontop.gif" alt="contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><br><!-- lastfooter --><a href="../about.html">about this FAQ list</a> <a href="../eskimo.html">about eskimo</a> <a href="../search.html">search</a> <a href="../feedback.html">feedback</a> <a href="copyright.html">copyright</a><p>Hosted by<a href="http://www.eskimo.com/"><img src="../../www.eskimo.com/img/link/eskitiny.gif" alt="Eskimo North"></a></body><!-- Mirrored from c-faq.com/malloc/ptrafterfree.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:58:51 GMT --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -