#include <stdint.h>
int main()
{
void *mem;
void *block;
char test[100] = {1 , 2 , 3};
int block_count = 20, block_size = 5;
mem = (void *)&test;
printf("test:%p \n", &test);
while (--block_count != 0U) {
block = &((uint8_t *)mem)[block_size];
printf("block:%p \n", block);
*((void **)mem) = block;
printf("*((void **)mem):%p \n", *((void **)mem));
mem = block;
printf("mem:%p \n", mem);
}
*((void **)mem) = NULL;
printf("Hello, World!(%d) (%d) (%d) \n", *((uint8_t *)(mem)), *((uint8_t *)(mem-1)), *((uint8_t *)(mem-2)));
return 0;
}
///
test:0x7fffb8033170
block:0x7fffb8033175
*((void **)mem):0x7fffb8033175
mem:0x7fffb8033175
block:0x7fffb803317a
*((void **)mem):0x7fffb803317a
mem:0x7fffb803317a
block:0x7fffb803317f
*((void **)mem):0x7fffb803317f
mem:0x7fffb803317f
block:0x7fffb8033184
*((void **)mem):0x7fffb8033184
mem:0x7fffb8033184
block:0x7fffb8033189
*((void **)mem):0x7fffb8033189
mem:0x7fffb8033189
block:0x7fffb803318e
*((void **)mem):0x7fffb803318e
mem:0x7fffb803318e
block:0x7fffb8033193
*((void **)mem):0x7fffb8033193
mem:0x7fffb8033193
block:0x7fffb8033198
*((void **)mem):0x7fffb8033198
mem:0x7fffb8033198
block:0x7fffb803319d
*((void **)mem):0x7fffb803319d
mem:0x7fffb803319d
block:0x7fffb80331a2
*((void **)mem):0x7fffb80331a2
mem:0x7fffb80331a2
block:0x7fffb80331a7
*((void **)mem):0x7fffb80331a7
mem:0x7fffb80331a7
block:0x7fffb80331ac
*((void **)mem):0x7fffb80331ac
mem:0x7fffb80331ac
block:0x7fffb80331b1
*((void **)mem):0x7fffb80331b1
mem:0x7fffb80331b1
block:0x7fffb80331b6
*((void **)mem):0x7fffb80331b6
mem:0x7fffb80331b6
block:0x7fffb80331bb
*((void **)mem):0x7fffb80331bb
mem:0x7fffb80331bb
block:0x7fffb80331c0
*((void **)mem):0x7fffb80331c0
mem:0x7fffb80331c0
block:0x7fffb80331c5
*((void **)mem):0x7fffb80331c5
mem:0x7fffb80331c5
block:0x7fffb80331ca
*((void **)mem):0x7fffb80331ca
mem:0x7fffb80331ca
block:0x7fffb80331cf
*((void **)mem):0x7fffb80331cf
mem:0x7fffb80331cf
Hello, World!(0) (255) (184)