/*
* Copyright ©2026 Soham Pardeshi. All rights reserved.
* Permission is hereby granted to students registered for University of
* Washington CSE 333 for use solely during Summer Quarter 2026 for
* purposes of the course. No other use, copying, distribution, or
* modification is permitted without prior written consent. Copyrights
* for third-party components of this work must be honored. Instructors
* interested in reusing these course materials should contact the author.
*/
// INTENTIONAL BUG (lecture demo): dereferences a pointer after free().
// free(a) returns the block to the allocator but does not change a, so *a
// afterward is use-after-free (undefined behavior).
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
int* a = malloc(sizeof(int));
*a = 5;
free(a); // block returned
printf("%d\n", *a); // use after free!
// free(a); // freeing again would be a double free
return EXIT_SUCCESS;
}