1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Independent and borrowed arrays</TITLE>
<META NAME="description" CONTENT="Independent and borrowed arrays">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="users_guide.css">
<LINK REL="next" HREF="node63.html">
<LINK REL="previous" HREF="node61.html">
<LINK REL="up" HREF="node59.html">
<LINK REL="next" HREF="node63.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html1580"
HREF="node63.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1574"
HREF="node59.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1568"
HREF="node61.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1576"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html1578"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1581"
HREF="node63.html">The Life of an</A>
<B> Up:</B> <A NAME="tex2html1575"
HREF="node59.html">Arrays</A>
<B> Previous:</B> <A NAME="tex2html1569"
HREF="node61.html">SIDL Language Features</A>
<B> <A NAME="tex2html1577"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html1579"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION02443000000000000000"></A>
<A NAME="2646"></A><A NAME="2647"></A>
<BR>
Independent and borrowed arrays
</H2>
<P>
From a memory perspective, there are two main kinds of arrays:
independent and borrowed. The independent arrays owns and manages its
data. It allocates space for the array elements when the array is
created, and it deallocates that space when the array is finally
destroyed.
<P>
The borrowed array does not own or manage its data. It borrows its
array element data from another source that it cannot manage, and it
only allocates space for the index bounds and stride information. The
rationale for borrowed arrays is to allow data from another source to
temporarily appear as a SIDL array without requiring data be copied.
<P>
If you <TT>slice</TT> an independent array, the resulting array is also
considered independent even though it borrows data from the original
independent array. The resulting array can still manage its data by
retaining a reference to the original array; hence, its element data
cannot disappear until the resulting array is destroyed.
If you <TT>slice</TT> a borrowed array, the resulting array is also
borrowed because like its original array, it doesn't manage the
underlying data.
<P>
In the Babel generated code, r-arrays are converted to borrowed
arrays. These borrowed arrays are allocated on the stack rather than
on the heap to improve performance of r-arrays.
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html1580"
HREF="node63.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1574"
HREF="node59.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1568"
HREF="node61.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1576"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html1578"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1581"
HREF="node63.html">The Life of an</A>
<B> Up:</B> <A NAME="tex2html1575"
HREF="node59.html">Arrays</A>
<B> Previous:</B> <A NAME="tex2html1569"
HREF="node61.html">SIDL Language Features</A>
<B> <A NAME="tex2html1577"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html1579"
HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>
|