source: public/doc/gnu-c/Aliasing-Length.html@ 02598c2

Last change on this file since 02598c2 was 02598c2, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:36:29 PM

Add gnu-c

  • Property mode set to 100644
File size: 3.9 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>Aliasing Length (GNU C Language Manual)</title>
23
24<meta name="description" content="Aliasing Length (GNU C Language Manual)">
25<meta name="keywords" content="Aliasing Length (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="index.html" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="Aliasing.html" rel="up" title="Aliasing">
33<link href="Aliasing-Type-Rules.html" rel="next" title="Aliasing Type Rules">
34<link href="Aliasing-Alignment.html" rel="prev" title="Aliasing Alignment">
35<style type="text/css">
36<!--
37a.summary-letter {text-decoration: none}
38blockquote.indentedblock {margin-right: 0em}
39div.display {margin-left: 3.2em}
40div.example {margin-left: 3.2em}
41div.lisp {margin-left: 3.2em}
42kbd {font-style: oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47span.nolinebreak {white-space: nowrap}
48span.roman {font-family: initial; font-weight: normal}
49span.sansserif {font-family: sans-serif; font-weight: normal}
50ul.no-bullet {list-style: none}
51-->
52</style>
53
54
55</head>
56
57<body lang="en">
58<span id="Aliasing-Length"></span><div class="header">
59<p>
60Next: <a href="Aliasing-Type-Rules.html" accesskey="n" rel="next">Aliasing Type Rules</a>, Previous: <a href="Aliasing-Alignment.html" accesskey="p" rel="prev">Aliasing Alignment</a>, Up: <a href="Aliasing.html" accesskey="u" rel="up">Aliasing</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
61</div>
62<hr>
63<span id="Aliasing-and-Length"></span><h3 class="appendixsection">B.2 Aliasing and Length</h3>
64
65<p>When converting a pointer to a different pointer type, make sure the
66object it really points to is at least as long as the target of the
67converted pointer. For instance, suppose <code>p</code> has type <code>int
68*</code> and it&rsquo;s cast as follows:
69</p>
70<div class="example">
71<pre class="example">int *p;
72
73struct
74 {
75 double d, e, f;
76 } foo;
77
78struct foo *q = (struct foo *)p;
79
80q-&gt;f = 5.14159;
81</pre></div>
82
83<p>the value <code>q-&gt;f</code> will run past the end of the <code>int</code> that
84<code>p</code> points to. If <code>p</code> was initialized to the start of an
85array of type <code>int[6]</code>, the object is long enough for three
86<code>double</code>s. But if <code>p</code> points to something shorter,
87<code>q-&gt;f</code> will run on beyond the end of that, overlaying some other
88data. Storing that will garble that other data. Or it could extend
89past the end of memory space and cause a <code>SIGSEGV</code> signal
90(see <a href="Signals.html">Signals</a>).
91</p>
92
93
94
95</body>
96</html>
Note: See TracBrowser for help on using the repository browser.