Вы всегда можете явно обмануть и освободить такой указатель:
#include <stdint.h>
#include <stdlib.h>
int
main (void)
{
free ((void *) (uintptr_t) 0x1c);
return 0;
}
Немного более реалистичным примером будет разыменование нулевого указателя с использованием элемента структуры со смещением 28. Примерно так:
#include <stddef.h>
struct data
{
int pad[7];
int value;
};
int
main (void)
{
volatile struct data *volatile pointer = NULL;
pointer->value = 0;
return 0;
}
(Ключевые слова volatile
необходимы, чтобы компилятор не распознавал нулевой указатель, не обращался к мертвому хранилищу и не оптимизировал его соответственно.)