<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Octave: Allocating Local Memory in Oct-Files</title>

<meta name="description" content="GNU Octave: Allocating Local Memory in Oct-Files">
<meta name="keywords" content="GNU Octave: Allocating Local Memory in Oct-Files">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Oct_002dFiles.html#Oct_002dFiles" rel="up" title="Oct-Files">
<link href="Input-Parameter-Checking-in-Oct_002dFiles.html#Input-Parameter-Checking-in-Oct_002dFiles" rel="next" title="Input Parameter Checking in Oct-Files">
<link href="Calling-External-Code-from-Oct_002dFiles.html#Calling-External-Code-from-Oct_002dFiles" rel="prev" title="Calling External Code from Oct-Files">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">


</head>

<body lang="en">
<a name="Allocating-Local-Memory-in-Oct_002dFiles"></a>
<div class="header">
<p>
Next: <a href="Input-Parameter-Checking-in-Oct_002dFiles.html#Input-Parameter-Checking-in-Oct_002dFiles" accesskey="n" rel="next">Input Parameter Checking in Oct-Files</a>, Previous: <a href="Calling-External-Code-from-Oct_002dFiles.html#Calling-External-Code-from-Oct_002dFiles" accesskey="p" rel="prev">Calling External Code from Oct-Files</a>, Up: <a href="Oct_002dFiles.html#Oct_002dFiles" accesskey="u" rel="up">Oct-Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Allocating-Local-Memory-in-Oct_002dFiles-1"></a>
<h4 class="subsection">A.1.10 Allocating Local Memory in Oct-Files</h4>

<p>Allocating memory within an oct-file might seem easy, as the C++ new/delete
operators can be used.  However, in that case great care must be taken to avoid
memory leaks.  The preferred manner in which to allocate memory for use locally
is to use the <code><span class="nolinebreak">OCTAVE_LOCAL_BUFFER</span></code><!-- /@w --> macro.  An example of its use is
</p>
<div class="example">
<pre class="example">OCTAVE_LOCAL_BUFFER (double, tmp, len)
</pre></div>

<p>that returns a pointer <code>tmp</code> of type <code>double *</code> of length <code>len</code>.
</p>
<p>In this case, Octave itself will worry about reference counting and variable
scope and will properly free memory without programmer intervention.
</p>



</body>
</html>
