<HTML><HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=koi8-r">
<TITLE>Ada95 Lovelace Tutorial ������ 12.6 - Unchecked_Deallocation</TITLE>
<LINK REV="made" HREF="mailto:dwheeler@ida.org">
<!-- Below are RSACi and SafeSurf ratings for this material. -->
<META http-equiv="PICS-Label" content='(PICS-1.0 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" by "dwheeler@ida.org" for "http://www.adahome.com/Tutorials/Lovelace" on "1996.04.04T08:15-0500" exp "1997.07.01T08:15-0500" r (n 0 s 0 v 0 l 0))'>
<META http-equiv="PICS-Label" content='(PICS-1.0 "http://www.classify.org/safesurf/" l gen true for "http://www.adahome.com/Tutorials/Lovelace/" by "dwheeler@ida.org" r (SS~~000 1 SS~~100 1))'>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H1><FONT COLOR="#996600">������ 12.6 - Unchecked_Deallocation</FONT></H1>
����� ��������� ����� ����� ������� ��������� ����� ��������� �������,
�� ������� �� ����� �� ����� ������.
��������� ����� �������� ���������� ``������� ������.''
� ����� Ada �������������� ������ ������ ���������,
�� �� �����������. �������� �� �������� ���� �����, ��� 
� ����������� Ada-������������ ������ ������ �� �����
������������� �������������, ����������� ������������� ����.
������� �����, ��� � Ada-������������, ������������
<A HREF="http://www.yahoo.com/Computers/Languages/Java">Java</A> J-���
(�������) �������������� ������ ������ <EM>�����������</EM>.
<P>
� Ada ������� ������������� ��������� ��� ������������ �������,
�� ������� ������ ��� ������.
��� ��������� ������������ ``free'' � ����� C ��� ``delete'' � C++.
��� ������������� ��������� ���������� ``Unchecked_Deallocation''.
��� ��� ��� �������������, �� ��� ������������� �� ���������� ����������������
����������� ��������� �����. �� ����������, ������������������ ��������� ������
�������� "Free".
<P>
� ��� ����������� �������� ������������� ���������
Unchecked_Deallocation:
<P>
<PRE>
  generic
    type Object(&lt;&gt;) is limited private;
    type Name   is access  Object;
  procedure Unchecked_Deallocation(X : in out Name);
</PRE>
<P>
�������� ��������, ��� ��� ������������� ���������� �������� �� ��� ���������:
���, � ��������� ��� ��� ����. ���� �������� ������� ������, � ������� ���������
��������� ``Free'', ����������� ����������� �������������� �������: 
<P>
<PRE>
  procedure Free is new Unchecked_Deallocation(Tree_Node, Tree_Access);
</PRE>
<P>
����� �������� ������������������ ��������� ``Free'', �� ����� �������. �������
��������� ��� ������; �����������, ��� ������� ������, ��������� ���� � ����� ��
���������� ��������, ������ �� �����. ��� �������: ��� ���������� ������
������� ��������� ���� ������������ ``Free''.
<P>
<PRE>
  Free(Current);
</PRE>
<P>
����� Free ��������� ����������, ���������� Current ����� ����� �������� "null",
� ������, �� ������� ��������� ���������� �������� Current, ����� �����������.
��� ������ ������ ���������� ��������� Unchecked_Deallocation, �����������, 
����� ������������� ����������� �������� ����������� ��������������
�������. 
<P>
�����, ��� � � ������ ������, ��������, C, C++ ��� Pascal,  ��������� ������ ��������:
��� ������, ���� ������ ���������� ��������� �� ��� �� ������? � ����� �������
��������� ���������� ``Root'' ���������� ��������� �� ������, ���� ����� ����,
��� �� ��������� ������������.
����� ������� ������������� ���������� Root ��� ��������� � ������� �����
�������� � ��������������� ������������.
�� ������ �� ��, ��� Ada ������������ ������������ ������ ��� �������������
��������� ����������, ��� ���� �� ��� ������� ������ ������� � Ada
(�������, ��� � � ������ ������) ��� �������������� �������� ������.
<P>
��� ��� ��� �� �������, ��� ���������� ���������� ������������ �������� �
������������ �� ����������� � ���������� �������������� �������������. 
��������� ����� ���������������� �������, ����� ������������ ������
����������� �������������; ��� ���������� <EM>�������������� ������� ������</EM>.
� �������� �������� ����� �������� Smalltalk, Eiffel, � Java.
��� �� ����� ���� ����� ������, ��� ������ �� ����� �� ������������
���� ��������? � ����������������, �������������� ������ ������ 
��������� ��� �������:
<P>
<UL>
<LI>
�������������� ������ ������ ����� �������� � ������������� ��������
������������������
<LI>
�������������� ������ ������ ����� �������� � ����������������� ������������������
���������. ������ ������ ����� �������� � ����� ������, ���������� �� ������ 
�����������, ���������� ��� ������������� ������.
<LI>
�������������� ������ ������ ������ ����������� (� ��� ���������, 
����� ���������� ����� ��������� �������������).
</UL>
<P>
�������� Ada �� ������� ������� �������������� ������ ������, ��
��� ���� �� ���������� ����� ���������� ����������� ���������� ����� ���������.
������������� ������������ ����� �������� ����� ����������� �� ������ ����������.
�������� Ada ������� ������������� ������� ��������� Unchecked_Deallocation, 
������� ������ ������ �� ������, ���� ������������ �������������� ������.
���� �� �����������  Ada-���������� ��� �������������� ������ ������
(� ����� �����������) � ��� ������� ������ ������������� ������������ ������,
������� ��������� �������� ������������� Unchecked_Deallocation.
<P>
Unchecked_Deallocation ��������� ������ �������� ��� ���� ��������, �������
�������.
Unchecked_Deallocation works just fine on any object, including arrays.
<!-- � ������� �� C++, ��� ��� �������� ������������� �������� delete, -->
<!-- ���������� ����� ��������� ����, � �� �� ���� ���� �� �������.    -->

<HR><P>
<IMG SRC="q.gif" ALT="" HEIGHT=34 WIDTH=23>
<A NAME="quiz"><FONT SIZE=+3 COLOR="#339900">����������:</FONT></A>
<P>
����� �� ��������� ����������� �������?
<OL>
<LI><A HREF="s12s6r1.htm">�������� Ada ��������� �������������� ������ ������.</A>
<LI><A HREF="s12s6r2.htm">�������� Ada ��������� �������������� ������ ������.</A>
<LI><A HREF="s12s6r3.htm">�������� Ada ������� �������������� ������ ������.</A>
</OL>
<HR>
�� ������ �����:
<P>
<TABLE BORDER=0><TR>
<TH><A HREF="s12s5.htm">
<IMG SRC="barrowl.gif" ALT="PREVIOUS " HEIGHT=31 WIDTH=31>
������� � ����������� �������</A>
<P></TH>

<TH><A HREF="s12sf.htm">
<IMG SRC="barrowr.gif" ALT="NEXT     " HEIGHT=31 WIDTH=31>
������� � ���������� �������</A>
<P></TH>

<TH><A HREF="lesson12.htm">
<IMG SRC="barrowu.gif" ALT="OUTLINE  " HEIGHT=31 WIDTH=31>
��������� � ���������� ����� 12</A>
<P></TH>
</TR></TABLE>
<P>


<P>
<FONT SIZE=2>
<ADDRESS><A HREF="dwheeler.htm">David A. Wheeler (dwheeler@ida.org)</A></ADDRESS>
<BR>
<I>
�������: <A HREF="mailto:jus@univ.kiev.ua">���� �������</A>
&nbsp;&nbsp;����� �������� ��������: <A HREF="mailto:app@polytech.poltava.ua">�.�. �����</A>
</I>
<P>
�������� ����� ����� ��������� ��������� �� ������
"<A HREF="http://www.adahome.com/Tutorials/Lovelace/s12s6.htm">http://www.adahome.com/Tutorials/Lovelace/s12s6.htm</A>".
<P>
�������� ����� �������� ��������� �� ����� <A HREF="http://www.ada-ru.org">http://www.ada-ru.org</A>
</FONT>
<!-- This text is part of the Ada95 Lovelace tutorial program. -->
<!-- For the contents of lesson 18, the following applies: -->
<!--  Copyright (C) 1996 Ada Resource Association -->
<!--  Copyright granted to the ARA under the condition that this text -->
<!--  will be redistributed to the public domain, without restriction; -->
<!--  you may use this information in any way you with, commercially or not, -->
<!--  without restriction. -->
<!-- = -->
<!-- For all other files in Ada95 Lovelace tutorial, the following applies: -->
<!--  Copyright (C) 2003 David A. Wheeler -->
<!--  This program is free software; you can redistribute it and/or modify -->
<!--  it under the terms of the GNU General Public License as published by -->
<!--  the Free Software Foundation; either version 2 of the License, or -->
<!--  (at your option) any later version. -->
<!--  This freedom only applies to the electronic version; the author -->
<!--  and/or publisher retain all rights to non-electronic versions. -->
<!-- = -->
<!-- This program is distributed in the hope that it will be useful, -->
<!-- but WITHOUT ANY WARRANTY; without even the implied warranty of -->
<!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -->
<!-- GNU General Public License for more details. -->
<!-- = -->
<!-- You should have received a copy of the GNU General Public License -->
<!-- along with this program; if not, write to the Free Software -->
<!-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -->
</BODY>
</HTML>