1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
// ILLUSTRATION OF USING FREEING MEMORY THAT IS NOT ON THE STACK
int main(int argc, char* argv[]) {
int n = 5;
int* a_n = &n; // Remember: &n means "address of n"
free(a_n); // BAD!!! a_n is the address of stack memory not heap memory.
return EXIT_SUCCESS;
}
/*
*** Error in `/home/dynamo/a/aq/q.c.temp': free(): invalid pointer: 0x00007ffec9d2e474 ***
======= Backtrace: =========
// BAD!!!!!! Allocation block at (address) a_n was already deallocated (="freed").
printf("*a_n == %d\n", *a_n); // NOT DEPENDABLE
/lib64/libc.so.6(+0x81329)[0x7fdc3904c329]
/home/dynamo/a/aq/q.c.temp[0x40056f]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7fdc38fed555]
/home/dynamo/a/aq/q.c.temp[0x400449]
======= Memory map: ========
00400000-00401000 r-xp 00000000 00:c7 10119989 /home/dynamo/a/aq/q.c.temp
00600000-00601000 r--p 00000000 00:c7 10119989 /home/dynamo/a/aq/q.c.temp
00601000-00602000 rw-p 00001000 00:c7 10119989 /home/dynamo/a/aq/q.c.temp
7fdc34000000-7fdc34021000 rw-p 00000000 00:00 0
7fdc34021000-7fdc38000000 ---p 00000000 00:00 0
7fdc38db4000-7fdc38dcb000 r-xp 00000000 00:3c 2362745505 /package/gcc/8.3.0/lib64/libgcc_s.so.1
7fdc38dcb000-7fdc38fca000 ---p 00017000 00:3c 2362745505 /package/gcc/8.3.0/lib64/libgcc_s.so.1
7fdc38fca000-7fdc38fcb000 rw-p 00016000 00:3c 2362745505 /package/gcc/8.3.0/lib64/libgcc_s.so.1
7fdc38fcb000-7fdc3918f000 r-xp 00000000 fd:00 50355025 /usr/lib64/libc-2.17.so
7fdc3918f000-7fdc3938e000 ---p 001c4000 fd:00 50355025 /usr/lib64/libc-2.17.so
7fdc3938e000-7fdc39392000 r--p 001c3000 fd:00 50355025 /usr/lib64/libc-2.17.so
7fdc39392000-7fdc39394000 rw-p 001c7000 fd:00 50355025 /usr/lib64/libc-2.17.so
7fdc39394000-7fdc39399000 rw-p 00000000 00:00 0
7fdc39399000-7fdc393bb000 r-xp 00000000 fd:00 50355011 /usr/lib64/ld-2.17.so
7fdc39578000-7fdc3957b000 rw-p 00000000 00:00 0
7fdc395b8000-7fdc395ba000 rw-p 00000000 00:00 0
7fdc395ba000-7fdc395bb000 r--p 00021000 fd:00 50355011 /usr/lib64/ld-2.17.so
7fdc395bb000-7fdc395bc000 rw-p 00022000 fd:00 50355011 /usr/lib64/ld-2.17.so
7fdc395bc000-7fdc395bd000 rw-p 00000000 00:00 0
7ffec9d0e000-7ffec9d30000 rw-p 00000000 00:00 0 [stack]
7ffec9d5b000-7ffec9d5d000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
/bin/bash: line 1: 35627 Aborted (core dumped) ~/q.c.temp
*/
/* 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.