This file is indexed.

/usr/share/doc/flex-doc/html/The-Default-Memory-Management.html is in flex-doc 2.6.4-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- 
The flex manual is placed under the same licensing conditions as the
rest of flex:

Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2012
The Flex Project.

Copyright (C) 1990, 1997 The Regents of the University of California.
All rights reserved.

This code is derived from software contributed to Berkeley by
Vern Paxson.

The United States Government has rights in this work pursuant
to contract no. DE-AC03-76SF00098 between the United States
Department of Energy and the University of California.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. -->
<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>The Default Memory Management (Lexical Analysis With Flex, for Flex 2.6.4)</title>

<meta name="description" content="The Default Memory Management (Lexical Analysis With Flex, for Flex 2.6.4)">
<meta name="keywords" content="The Default Memory Management (Lexical Analysis With Flex, for Flex 2.6.4)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html#Top" rel="start" title="Top">
<link href="Indices.html#Indices" rel="index" title="Indices">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Memory-Management.html#Memory-Management" rel="up" title="Memory Management">
<link href="Overriding-The-Default-Memory-Management.html#Overriding-The-Default-Memory-Management" rel="next" title="Overriding The Default Memory Management">
<link href="Memory-Management.html#Memory-Management" rel="prev" title="Memory Management">
<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>


</head>

<body lang="en">
<a name="The-Default-Memory-Management"></a>
<div class="header">
<p>
Next: <a href="Overriding-The-Default-Memory-Management.html#Overriding-The-Default-Memory-Management" accesskey="n" rel="next">Overriding The Default Memory Management</a>, Previous: <a href="Memory-Management.html#Memory-Management" accesskey="p" rel="prev">Memory Management</a>, Up: <a href="Memory-Management.html#Memory-Management" accesskey="u" rel="up">Memory Management</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html#Indices" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="The-Default-Memory-Management-1"></a>
<h3 class="section">21.1 The Default Memory Management</h3>

<p>Flex allocates dynamic memory during initialization, and once in a while from
within a call to yylex(). Initialization takes place during the first call to
yylex(). Thereafter, flex may reallocate more memory if it needs to enlarge a
buffer. As of version 2.5.9 Flex will clean up all memory when you call <code>yylex_destroy</code>
See <a href="Memory-leak-_002d-16386-bytes-allocated-by-malloc_002e.html#faq_002dmemory_002dleak">faq-memory-leak</a>.
</p>
<p>Flex allocates dynamic memory for four purposes, listed below <a name="DOCF2" href="#FOOT2"><sup>2</sup></a> 
</p>
<dl compact="compact">
<dt>16kB for the input buffer.</dt>
<dd><p>Flex allocates memory for the character buffer used to perform pattern
matching.  Flex must read ahead from the input stream and store it in a large
character buffer.  This buffer is typically the largest chunk of dynamic memory
flex consumes. This buffer will grow if necessary, doubling the size each time.
Flex frees this memory when you call yylex_destroy().  The default size of this
buffer (16384 bytes) is almost always too large.  The ideal size for this
buffer is the length of the longest token expected, in bytes, plus a little more.  Flex will allocate a few
extra bytes for housekeeping. Currently, to override the size of the input buffer
you must <code>#define YY_BUF_SIZE</code> to whatever number of bytes you want. We don&rsquo;t plan
to change this in the near future, but we reserve the right to do so if we ever add a more robust memory management
API. 
</p>
</dd>
<dt>64kb for the REJECT state. This will only be allocated if you use REJECT.</dt>
<dd><p>The size is  large enough to hold the same number of states as characters in the input buffer. If you override the size of the
input buffer (via <code>YY_BUF_SIZE</code>), then you automatically override the size of this buffer as well.
</p>
</dd>
<dt>100 bytes for the start condition stack.</dt>
<dd><p>Flex allocates memory for the start condition stack. This is the stack used
for pushing start states, i.e., with yy_push_state(). It will grow if
necessary.  Since the states are simply integers, this stack doesn&rsquo;t consume
much memory.  This stack is not present if <code>%option stack</code> is not
specified.  You will rarely need to tune this buffer. The ideal size for this
stack is the maximum depth expected.  The memory for this stack is
automatically destroyed when you call yylex_destroy(). See <a href="Options-Affecting-Scanner-Behavior.html#option_002dstack">option-stack</a>.
</p>
</dd>
<dt>40 bytes for each YY_BUFFER_STATE.</dt>
<dd><p>Flex allocates memory for each YY_BUFFER_STATE. The buffer state itself
is about 40 bytes, plus an additional large character buffer (described above.)
The initial buffer state is created during initialization, and with each call
to yy_create_buffer(). You can&rsquo;t tune the size of this, but you can tune the
character buffer as described above. Any buffer state that you explicitly
create by calling yy_create_buffer() is <em>NOT</em> destroyed automatically. You
must call yy_delete_buffer() to free the memory. The exception to this rule is
that flex will delete the current buffer automatically when you call
yylex_destroy(). If you delete the current buffer, be sure to set it to NULL.
That way, flex will not try to delete the buffer a second time (possibly
crashing your program!) At the time of this writing, flex does not provide a
growable stack for the buffer states.  You have to manage that yourself.
See <a href="Multiple-Input-Buffers.html#Multiple-Input-Buffers">Multiple Input Buffers</a>.
</p>
</dd>
<dt>84 bytes for the reentrant scanner guts</dt>
<dd><p>Flex allocates about 84 bytes for the reentrant scanner structure when
you call yylex_init(). It is destroyed when the user calls yylex_destroy().
</p>
</dd>
</dl>


<div class="footnote">
<hr>
<h4 class="footnotes-heading">Footnotes</h4>

<h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
<p>The
quantities given here are approximate, and may vary due to host architecture,
compiler configuration, or due to future enhancements to flex.</p>
</div>
<hr>
<div class="header">
<p>
Next: <a href="Overriding-The-Default-Memory-Management.html#Overriding-The-Default-Memory-Management" accesskey="n" rel="next">Overriding The Default Memory Management</a>, Previous: <a href="Memory-Management.html#Memory-Management" accesskey="p" rel="prev">Memory Management</a>, Up: <a href="Memory-Management.html#Memory-Management" accesskey="u" rel="up">Memory Management</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html#Indices" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>