Skip to content

Commit 88b6a42

Browse files
committed
clarify the size=0 case
1 parent e72976a commit 88b6a42

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/behavior-considered-undefined.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,14 @@ reading uninitialized memory is permitted are inside `union`s and in "padding"
7676
[dangling]: #dangling-pointers
7777

7878
A reference/pointer is "dangling" if it is null or not all of the bytes it
79-
points to are part of the same allocation (so in particular they all have to be
79+
points to are part of the same live allocation (so in particular they all have to be
8080
part of *some* allocation). The span of bytes it points to is determined by the
8181
pointer value and the size of the pointee type (using `size_of_val`).
8282

83+
If the size is 0, then the pointer must either point inside of a live allocation
84+
(including pointing just after the last byte of the allocation), or it must be
85+
directly constructed from a non-zero integer literal.
86+
8387
Note that dynamically sized types (such as slices and strings) point to their
8488
entire range, so it is important that the length metadata is never too large. In
8589
particular, the dynamic size of a Rust value (as determined by `size_of_val`)

0 commit comments

Comments
 (0)