<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2002/12/bef5070e1bc3ca250bf2f818ad6ff8fa"
  from="David Brown &lt;caml-list@d...&gt;"
  author="David Brown"
  date="2002-12-13T17:05:51"
  subject="Re: [Caml-list] Resource acquisition is initialization"
  prev="2002/12/519c8998e014161b242ede93d68d76bb"
  next="2002/12/6b1f94011590c635c45031badeadf1a3"
  prev-in-thread="2002/12/4f5285419bbec1c865398ea6d1f21997"
  next-in-thread="2002/12/f0675ccbe1bf6bcbf69263f410121e17"
  prev-thread="2002/12/a7df150482511ac2dc29aad949c1630c"
  next-thread="2002/12/e9bc0bae209d5d139109989b178cbc85"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/919e5b9de09938198c2fd0856d238c55"
  from="Blair Zajac &lt;blair@o...&gt;"
  author="Blair Zajac"
  date="2002-12-11T19:18:46"
  subject="[Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/5fc049891ea11b2acd98c914bdd66486"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2002-12-11T19:47:44"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/5170d849604617577c466f9ddbc70c6a"
  from="Chet Murthy &lt;chet@w...&gt;"
  author="Chet Murthy"
  date="2002-12-12T00:29:37"
  subject="Re: [Caml-list] Resource acquisition is initialization ">
</msg>
<msg 
  url="2002/12/2820617a735026a0db6d33ccaaf53c59"
  from="Alessandro Baretta &lt;alex@b...&gt;"
  author="Alessandro Baretta"
  date="2002-12-12T07:54:49"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/fa5147003546a7ff957dba5a5ab3012d"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2002-12-12T16:32:25"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
<msg 
  url="2002/12/4f5285419bbec1c865398ea6d1f21997"
  from="Mike Potanin &lt;potanin@m...&gt;"
  author="Mike Potanin"
  date="2002-12-13T09:08:43"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/bef5070e1bc3ca250bf2f818ad6ff8fa"
  from="David Brown &lt;caml-list@d...&gt;"
  author="David Brown"
  date="2002-12-13T17:05:51"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
</msg>
<msg 
  url="2002/12/f0675ccbe1bf6bcbf69263f410121e17"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2002-12-12T13:17:08"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/d9879736886f7d0799a45d28d7845728"
  from="Dmitry Bely &lt;dbely@m...&gt;"
  author="Dmitry Bely"
  date="2002-12-12T14:07:03"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/5833c628ad7eb5017603c6a0f60ca7e8"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2002-12-12T14:16:07"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
<msg 
  url="2002/12/1fc22ef6af0290c23b787df542ce98bc"
  from="Blair Zajac &lt;blair@o...&gt;"
  author="Blair Zajac"
  date="2002-12-12T23:59:11"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
<msg 
  url="2002/12/880189f28b91773cde73a547cf10094b"
  from="Quetzalcoatl Bradley &lt;qbradley@b...&gt;"
  author="Quetzalcoatl Bradley"
  date="2002-12-13T11:27:48"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
</msg>
</thread>

<contents>
On Fri, Dec 13, 2002 at 12:22:16PM +0300, Mike Potanin wrote:

&gt; &gt; char * foo(...) {
&gt; &gt;     char buf[];
&gt; &gt;     /* do something to fill buf */
&gt; &gt;     return buf;
&gt; &gt; }
&gt; &gt;
&gt; &gt; This sounds like a wonderful way to introduce dangling pointer bugs in the
&gt; &gt; language.

&gt; Cyclone language handle this problec staticaly (compile time). It no need
&gt; GC use.

Numerous languages handle this kind of construct.  Often, though, you
end up having to copy the result when you return.  However, they
wouldn't handle it if the function was defined to return a pointer.
Instead, however, they let functions return larger objects (such as
arrays).

Usually they are implemented with a secondary stack to hold these
values.

I suspect, though, that the additional copying that ends up happening
with the technique ends up being as, or more, expensive than Ocaml's
garbage collector, especially if the data doesn't live long and doesn't
survive the young area.

Dave Brown
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners

</contents>

</message>

