https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116900
Bug ID: 116900
Summary: False Positive Use After Free Warning
Product: gcc
Version: 14.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: alpha.and.omega.programmer at gmail dot com
Target Milestone: ---
Created attachment 59230
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59230&action=edit
Bug Demonstration
$ gcc -Wuse-after-free t.c
t.c: In function 'main':
t.c:7:9: warning: pointer 'ptr' used after 'free' [-Wuse-after-free]
7 | printf("%p\n", ptr);
| ^~~~~~~~~~~~~~~~~~~
t.c:6:9: note: call to 'free' here
6 | free(ptr);
| ^~~~~~~~~
After mallocing and freeing a pointer, attempting the print the memory address
held in the pointer without attempting to dereference the pointer, such as with
printf("%p"), causes a use after free warning.
The pointer is invalid, but since no attempt is made to dereference the
pointer, no use after free is possible, so this warning is a false positive.
This happens with any pointer type, including a void pointer which can't
possibly be dereferenced.