<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(<>) 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> ����� �������� ��������: <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>