The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
 lang="en" dir="ltr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>
    new    [C++ Reference]
  </title>

  <meta name="generator" content="DokuWiki Release 2009-12-25c &quot;Lemming&quot;" />
<meta name="robots" content="index,follow" />
<meta name="date" content="2009-06-17T17:56:12-0700" />
<meta name="keywords" content="keywords,new" />
<link rel="search" type="application/opensearchdescription+xml" href="/wiki/lib/exe/opensearch.php" title="C++ Reference" />
<link rel="start" href="/wiki/" />
<link rel="contents" href="/wiki/keywords/new?do=index" title="Index" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="/wiki/feed.php?mode=list&amp;ns=keywords" />
<link rel="edit" title="Edit this page" href="/wiki/keywords/new?do=edit" />
<link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/keywords/new" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/keywords/new" />
<link rel="canonical" href="http://www.cppreference.com/wiki/keywords/new" />
<link rel="stylesheet" media="all" type="text/css" href="/wiki/lib/exe/css.php?s=all&amp;t=custom1&amp;tseed=1272971091" />
<link rel="stylesheet" media="screen" type="text/css" href="/wiki/lib/exe/css.php?t=custom1&amp;tseed=1272971091" />
<link rel="stylesheet" media="print" type="text/css" href="/wiki/lib/exe/css.php?s=print&amp;t=custom1&amp;tseed=1272971091" />
<script type="text/javascript" charset="utf-8" ><!--//--><![CDATA[//><!--
var NS='keywords';var JSINFO = {"id":"keywords:new","namespace":"keywords"};
//--><!]]></script>
<script type="text/javascript" charset="utf-8" src="/wiki/lib/exe/js.php?tseed=1272971091" ></script>

  <link rel="shortcut icon" href="/wiki/lib/tpl/custom1/images/favicon.png" />

  </head>

<body>
<div class="dokuwiki">
  
  <div class="stylehead">

    <div class="header">
      <div class="pagename">
        [[<a href="../keywords/new.html"  title="Backlinks">new</a>]]
      </div>
      <div class="logo">
        <a href="http://www.cppreference.com"  name="dokuwiki__top" id="dokuwiki__top" accesskey="h" title="[ALT+H]">C++ Reference</a>      </div>

      <div class="clearer"></div>
    </div>

    
    
        <div class="breadcrumbs">
      <span class="bchead">You are here: </span><a href="../start.html"  title="start">C++ Reference</a> &raquo; <a href="../keywords/start.html"  title="keywords:start">C++ Keywords</a> &raquo; <a href="../keywords/new.html"  title="keywords:new">new</a>    </div>
    
  </div>

<div class="plugin_translation"><span>Translations of this page<sup><a href="../localization.html" class="wikilink1" title="localization">?</a></sup>:</span> <ul>  <li><div class="li"><span class="curid"><a href="../keywords/new.html" class="wikilink1" title="keywords:new">en</a></span></div></li>  <li><div class="li"><a href="../br-pt/keywords/new.html" class="wikilink2" title="br-pt:keywords:new" rel="nofollow">br-pt</a></div></li>  <li><div class="li"><a href="../cn/keywords/new.html" class="wikilink2" title="cn:keywords:new" rel="nofollow">cn</a></div></li>  <li><div class="li"><a href="../cz/keywords/new.html" class="wikilink2" title="cz:keywords:new" rel="nofollow">cz</a></div></li>  <li><div class="li"><a href="../de/keywords/new.html" class="wikilink2" title="de:keywords:new" rel="nofollow">de</a></div></li>  <li><div class="li"><a href="../es/keywords/new.html" class="wikilink2" title="es:keywords:new" rel="nofollow">es</a></div></li>  <li><div class="li"><a href="../fr/keywords/new.html" class="wikilink2" title="fr:keywords:new" rel="nofollow">fr</a></div></li>  <li><div class="li"><a href="../it/keywords/new.html" class="wikilink2" title="it:keywords:new" rel="nofollow">it</a></div></li>  <li><div class="li"><a href="../jp/keywords/new.html" class="wikilink1" title="jp:keywords:new">jp</a></div></li>  <li><div class="li"><a href="../nl/keywords/new.html" class="wikilink2" title="nl:keywords:new" rel="nofollow">nl</a></div></li>  <li><div class="li"><a href="../pl/keywords/new.html" class="wikilink2" title="pl:keywords:new" rel="nofollow">pl</a></div></li>  <li><div class="li"><a href="../ro/keywords/new.html" class="wikilink2" title="ro:keywords:new" rel="nofollow">ro</a></div></li>  <li><div class="li"><a href="../ru/keywords/new.html" class="wikilink2" title="ru:keywords:new" rel="nofollow">ru</a></div></li>  <li><div class="li"><a href="../sk/keywords/new.html" class="wikilink2" title="sk:keywords:new" rel="nofollow">sk</a></div></li>  <li><div class="li"><a href="../tr/keywords/new.html" class="wikilink2" title="tr:keywords:new" rel="nofollow">tr</a></div></li>  <li><div class="li"><a href="../tw/keywords/new.html" class="wikilink2" title="tw:keywords:new" rel="nofollow">tw</a></div></li></ul></div>
  
  
  <div class="page">

    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2828341-1";
urchinTracker();
</script>
    <!-- wikipage start -->
    


<h2><a name="new" id="new">new</a></h2>
<div class="level2">

<p>
Syntax:
</p>
<pre class="c code c++" style="font-family:monospace;">    pointer <span class="sy0">=</span> new type<span class="sy0">;</span>
    pointer <span class="sy0">=</span> new type<span class="br0">&#40;</span> initializer <span class="br0">&#41;</span><span class="sy0">;</span>
    pointer <span class="sy0">=</span> new type<span class="br0">&#91;</span>size<span class="br0">&#93;</span><span class="sy0">;</span>
    pointer <span class="sy0">=</span> new<span class="br0">&#40;</span> arg<span class="sy0">-</span>list <span class="br0">&#41;</span> type...</pre>
<p>

The new operator (valid only in C++) allocates a new chunk of memory to hold a
variable of type type and returns a pointer to that memory. An optional
initializer can be used to initialize the memory (or, when type is a class,
to provide arguments to the constructor).
</p>

<p>
Allocating arrays can be
accomplished by providing a size parameter in brackets (note that in this case
no initializer can be given, so the type must be default-constructible).
</p>

<p>
The optional arg-list parameter can be used with any of the other formats to
pass a variable number of arguments to an overloaded version of new(). 
Perhaps the most useful argument is nothrow which does not throw an exception when
there is no available memory. For example:
</p>
<pre class="c code c++" style="font-family:monospace;">    Foo <span class="sy0">*</span>foo<span class="sy0">;</span> <span class="co1">// Foo is a class, and foo is a pointer to an object of the Foo class</span>
    foo <span class="sy0">=</span> new<span class="br0">&#40;</span>nothrow<span class="br0">&#41;</span> Foo<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    assert<span class="br0">&#40;</span> foo <span class="br0">&#41;</span><span class="sy0">;</span></pre>
<p>
Alternately, the new() function can be overloaded for
a class and then passed arbitrary arguments. For example:
</p>
<pre class="c code c++" style="font-family:monospace;">    class Base <span class="br0">&#123;</span>
    public<span class="sy0">:</span>
      Base<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span>
&nbsp;
      <span class="kw4">void</span> <span class="sy0">*</span>operator new<span class="br0">&#40;</span> size_t size<span class="sy0">,</span> <span class="kw4">string</span> str <span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;Logging an allocation of &quot;</span> <span class="sy0">&lt;&lt;</span> size <span class="sy0">&lt;&lt;</span> <span class="st0">&quot; bytes for new object'&quot;</span> <span class="sy0">&lt;&lt;</span> str <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;'&quot;</span> <span class="sy0">&lt;&lt;</span> endl<span class="sy0">;</span>
        <span class="kw1">return</span> malloc<span class="br0">&#40;</span> size <span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
&nbsp;
      <span class="kw4">int</span> var<span class="sy0">;</span>
      <span class="kw4">double</span> var2<span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
    ...
&nbsp;
    <span class="me1">Base</span><span class="sy0">*</span> b <span class="sy0">=</span> new <span class="br0">&#40;</span><span class="st0">&quot;Base instance 1&quot;</span><span class="br0">&#41;</span> Base<span class="sy0">;</span></pre>
<p>

If an int is 4 bytes and a double is 8 bytes, the above code generates the
following output when run:
</p>
<pre class="c code c++" style="font-family:monospace;">    Logging an allocation of 12 bytes <span class="kw1">for</span> new object <span class="st0">'Base instance 1'</span></pre>
<p>
Remember to free any memory allocated with new with the <a href="../keywords/delete.html" class="wikilink1" title="keywords:delete">delete</a> operator. If you use the array version of the new operator, you will need to use the array version of the delete operator.
</p>

<p>
Related Topics: <a href="../keywords/delete.html" class="wikilink1" title="keywords:delete">delete</a>, <a href="../c/mem/free.html" class="wikilink1" title="c:mem:free">free</a>, <a href="../c/mem/malloc.html" class="wikilink1" title="c:mem:malloc">malloc</a>
</p>

</div>
<div class="secedit"><form class="button btn_secedit" method="post" action="/wiki/keywords/new"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="3-" /><input type="hidden" name="rev" value="1245286572" /><input type="submit" value="Edit" class="button" title="new" /></div></form></div>
    <!-- wikipage stop -->
  </div>

  <div class="clearer">&nbsp;</div>

  
  <div class="stylefoot">

    <div class="meta">
      <div class="user">
              </div>
      <!--
      <div class="doc">
        keywords/new.txt &middot; Last modified: 06/17/2009 17:56 by 24.82.151.145      </div>
      -->
    </div>

   
    <div class="bar" id="bar__bottom">
      <div class="bar-left" id="bar__bottomleft">
        <a href="../keywords/new.html"  class="action edit" accesskey="e" rel="nofollow">Edit this page</a> &#149;
        <a href="../keywords/new.html"  class="action revisions" accesskey="o" rel="nofollow">Old revisions</a>      </div>
      <div class="bar-right" id="bar__bottomright">
         &#149;
         &#149;
         &#149;
        <a href="../keywords/new.html"  class="action login" rel="nofollow">Login</a> &#149;
        <a href="../keywords/new.html"  class="action index" accesskey="x" rel="nofollow">Index</a> &#149;
        <a href="../keywords/new.html"  class="action recent" accesskey="r" rel="nofollow">Recent changes</a> &#149;
        <a  href="../feed.php.html" title="Recent changes RSS feed">RSS</a> &#149;
        <a href='http://creativecommons.org/licenses/by/3.0/us/' title='Creative Commons license'>cc</a> &#149;
        <form action="/wiki/" accept-charset="utf-8" class="search" id="dw__search"><div class="no"><input type="hidden" name="do" value="search" /><input type="text" id="qsearch__in" accesskey="f" name="id" class="edit" title="[ALT+F]" /><input type="submit" value="Search" class="button" title="Search" /><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form>&nbsp;
      </div>
      <div class="clearer"></div>
    </div>

  </div>

</div>

<div class="no"><img src="/wiki/lib/exe/indexer.php?id=keywords%3Anew&amp;1273193133" width="1" height="1" alt=""  /></div>
</body>
</html>