1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>

// WARNING: this is bad, do not do this
// NEVER return the address of a stack allocated variable
// from this function
int* return_address_of_stack_variable(int value) {
    int n = value;
    int* a_n = &n;
    return a_n;
}

int main(int argc, char* argv[]) {
    int* a_n1 = return_address_of_stack_variable(5);
    int* a_n2 = return_address_of_stack_variable(7);
    printf("Number is %d at address %p\n", *a_n1, (void*)a_n1);
    printf("Number is %d at address %p\n", *a_n2, (void*)a_n2);
    return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */

© Copyright 2022 Alexander J. Quinn         This content is protected and may not be shared, uploaded, or distributed.