diff options
Diffstat (limited to 'doc/html/align/rationale.html')
-rw-r--r-- | doc/html/align/rationale.html | 156 |
1 files changed, 50 insertions, 106 deletions
diff --git a/doc/html/align/rationale.html b/doc/html/align/rationale.html index a5243c1af7..2782b673ba 100644 --- a/doc/html/align/rationale.html +++ b/doc/html/align/rationale.html @@ -8,7 +8,7 @@ <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> <link rel="up" href="../align.html" title="Chapter 4. Boost.Align"> <link rel="prev" href="../align.html" title="Chapter 4. Boost.Align"> -<link rel="next" href="tutorial.html" title="Tutorial"> +<link rel="next" href="examples.html" title="Examples"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table cellpadding="2" width="100%"><tr> @@ -21,7 +21,7 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="../align.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../align.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="../align.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../align.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> @@ -35,103 +35,44 @@ <p> C++11 added the ability to specify increased alignment (over-alignment) for class types. Unfortunately, <code class="computeroutput"><span class="special">::</span><span class="keyword">operator</span> <span class="keyword">new</span></code> - allocation functions, <code class="computeroutput"><span class="keyword">new</span></code> expressions, - and the default allocator, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>, + allocation functions, <code class="computeroutput"><span class="keyword">new</span></code> expressions + and the Default Allocator, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>, do not support dynamic memory allocation of over-aligned data. This library - provides allocation functions, allocators, allocator adaptors, and deleters, - that are alignment aware. + provides allocation functions and allocators that respect the alignment requirements + of a type and so are suitable for allocating memory for over-aligned types. </p> -<div class="table"> -<a name="align.rationale.boost_align_solutions"></a><p class="title"><b>Table 4.2. Boost.Align solutions</b></p> -<div class="table-contents"><table class="table" summary="Boost.Align solutions"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th> - <p> - Problem - </p> - </th> -<th> - <p> - Solution - </p> - </th> -</tr></thead> -<tbody> -<tr> -<td> - <p> - <code class="computeroutput"><span class="special">::</span><span class="keyword">operator</span> - <span class="keyword">new</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> - <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">no_throw_t</span><span class="special">&)</span></code> - </p> - </td> -<td> - <p> - <code class="computeroutput"><span class="identifier">aligned_alloc</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> - <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">)</span></code> - </p> - </td> -</tr> -<tr> -<td> - <p> - <code class="computeroutput"><span class="special">::</span><span class="keyword">operator</span> - <span class="keyword">delete</span><span class="special">(</span><span class="keyword">void</span><span class="special">*)</span></code> - </p> - </td> -<td> - <p> - <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">(</span><span class="keyword">void</span><span class="special">*)</span></code> - </p> - </td> -</tr> -<tr> -<td> - <p> - <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> - </p> - </td> -<td> - <p> - <code class="computeroutput"><span class="identifier">aligned_allocator</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> - </p> - </td> -</tr> -<tr> -<td> - <p> - <code class="computeroutput"><span class="identifier">Allocator</span></code> - </p> - </td> -<td> - <p> - <code class="computeroutput"><span class="identifier">aligned_allocator_adaptor</span><span class="special"><</span><span class="identifier">Allocator</span><span class="special">></span></code> - </p> - </td> -</tr> -<tr> -<td> - <p> - <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">default_delete</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> - </p> - </td> -<td> - <p> - <code class="computeroutput"><span class="identifier">aligned_delete</span></code> - </p> - </td> -</tr> -</tbody> -</table></div> +<div class="variablelist"> +<p class="title"><b></b></p> +<dl class="variablelist"> +<dt><span class="term"><code class="computeroutput"><span class="identifier">aligned_alloc</span><span class="special">(</span><span class="identifier">alignment</span><span class="special">,</span> <span class="identifier">size</span><span class="special">)</span></code></span></dt> +<dd><p> + Replaces <code class="computeroutput"><span class="special">::</span><span class="keyword">operator</span> + <span class="keyword">new</span><span class="special">(</span><span class="identifier">size</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">nothrow</span><span class="special">)</span></code> + </p></dd> +<dt><span class="term"><code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">(</span><span class="identifier">pointer</span><span class="special">)</span></code></span></dt> +<dd><p> + Replaces <code class="computeroutput"><span class="special">::</span><span class="keyword">operator</span> + <span class="keyword">delete</span><span class="special">(</span><span class="identifier">pointer</span><span class="special">,</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">nothrow</span><span class="special">)</span></code> + </p></dd> +<dt><span class="term"><code class="computeroutput"><span class="identifier">aligned_allocator</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code></span></dt> +<dd><p> + Replaces <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> + </p></dd> +<dt><span class="term"><code class="computeroutput"><span class="identifier">aligned_allocator_adaptor</span><span class="special"><</span><span class="identifier">Allocator</span><span class="special">></span></code></span></dt> +<dd><p> + Replaces use of Allocator + </p></dd> +<dt><span class="term"><code class="computeroutput"><span class="identifier">aligned_delete</span></code></span></dt> +<dd><p> + Replaces <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">default_delete</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> + </p></dd> +</dl> </div> -<br class="table-break"><h4> +<h4> <a name="align.rationale.h1"></a> - <span class="phrase"><a name="align.rationale.alignment_functions"></a></span><a class="link" href="rationale.html#align.rationale.alignment_functions">Alignment - functions</a> + <span class="phrase"><a name="align.rationale.pointer_alignment"></a></span><a class="link" href="rationale.html#align.rationale.pointer_alignment">Pointer + alignment</a> </h4> <p> C++11 provided <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">align</span></code> in the standard library to align a @@ -143,8 +84,8 @@ </p> <h4> <a name="align.rationale.h2"></a> - <span class="phrase"><a name="align.rationale.alignment_traits"></a></span><a class="link" href="rationale.html#align.rationale.alignment_traits">Alignment - traits</a> + <span class="phrase"><a name="align.rationale.querying_alignment"></a></span><a class="link" href="rationale.html#align.rationale.querying_alignment">Querying + alignment</a> </h4> <p> C++11 provided the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">alignment_of</span></code> trait in the standard library @@ -157,35 +98,38 @@ </p> <h4> <a name="align.rationale.h3"></a> - <span class="phrase"><a name="align.rationale.alignment_hints"></a></span><a class="link" href="rationale.html#align.rationale.alignment_hints">Alignment - hints</a> + <span class="phrase"><a name="align.rationale.hinting_alignment"></a></span><a class="link" href="rationale.html#align.rationale.hinting_alignment">Hinting + alignment</a> </h4> <p> Allocating aligned memory is sometimes not enough to ensure that optimal code is generated. Developers use specific compiler intrinsics to notify the compiler - of a given alignment property of a memory block. This library provides a macro + of a given alignment property of a memory block. This library provides a macro, + <code class="computeroutput"><span class="identifier">BOOST_ALIGN_ASSUME_ALIGNED</span></code>, to abstract that functionality for compilers with the appropriate intrinsics. </p> <h4> <a name="align.rationale.h4"></a> - <span class="phrase"><a name="align.rationale.alignment_testing"></a></span><a class="link" href="rationale.html#align.rationale.alignment_testing">Alignment - testing</a> + <span class="phrase"><a name="align.rationale.checking_alignment"></a></span><a class="link" href="rationale.html#align.rationale.checking_alignment">Checking + alignment</a> </h4> <p> - This library provides a function to test the alignment of a pointer value. - It is generally useful in assertions to validate that memory is correctly aligned. + This library provides a function, <code class="computeroutput"><span class="identifier">is_aligned</span></code> + to test the alignment of a pointer value. It is generally useful in assertions + to validate that memory is correctly aligned. </p> </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014-2016 Glen Joseph Fernandes<p> +<td align="right"><div class="copyright-footer">Copyright © 2014-2017 Glen + Joseph Fernandes<p> Distributed under the Boost Software License, Version 1.0. </p> </div></td> </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="../align.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../align.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="../align.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../align.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> </body> </html> |