tmp/tmpt35itqaw/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#### General <a id="basic.stc.general">[[basic.stc.general]]</a>
|
| 2 |
+
|
| 3 |
+
The *storage duration* is the property of an object that defines the
|
| 4 |
+
minimum potential lifetime of the storage containing the object. The
|
| 5 |
+
storage duration is determined by the construct used to create the
|
| 6 |
+
object and is one of the following:
|
| 7 |
+
|
| 8 |
+
- static storage duration
|
| 9 |
+
- thread storage duration
|
| 10 |
+
- automatic storage duration
|
| 11 |
+
- dynamic storage duration
|
| 12 |
+
|
| 13 |
+
Static, thread, and automatic storage durations are associated with
|
| 14 |
+
objects introduced by declarations [[basic.def]] and implicitly created
|
| 15 |
+
by the implementation [[class.temporary]]. The dynamic storage duration
|
| 16 |
+
is associated with objects created by a *new-expression* [[expr.new]].
|
| 17 |
+
|
| 18 |
+
The storage duration categories apply to references as well.
|
| 19 |
+
|
| 20 |
+
When the end of the duration of a region of storage is reached, the
|
| 21 |
+
values of all pointers representing the address of any part of that
|
| 22 |
+
region of storage become invalid pointer values [[basic.compound]].
|
| 23 |
+
Indirection through an invalid pointer value and passing an invalid
|
| 24 |
+
pointer value to a deallocation function have undefined behavior. Any
|
| 25 |
+
other use of an invalid pointer value has *implementation-defined*
|
| 26 |
+
behavior.[^10]
|
| 27 |
+
|