¿Cómo inicializar el puntero estático con malloc en C?

Estoy intentando iniciar una variable estática (dentro de una función) con malloc en C, pero obtengo el "error de inicialización no constante". Sé que no puedo iniciar una estática con no constantes en C, pero ¿alguien puede pensar en una solución? Necesito que el código tenga el mismo efecto que este:

static int *p = (int *)malloc(sizeof(int));

¿Hay un truco / solución?

EDITAR: Tengo una función que se llama cada vez que una bandera sube. En esta función, estoy creando e iniciando un nuevo hilo. Declaro un puntero a una estructura y uso malloc para asignar memoria y luego paso este puntero al hilo. Entonces la función devuelve el control. Cuando vuelva a ingresar a la función, el subproceso que abrí inicialmente todavía se estará ejecutando y quiero poder acceder a la región de memoria que originalmente pasé al subproceso. Es por eso que necesito una estática para poder utilizar Malloc en la primera llamada y luego usar la misma dirección en las llamadas posteriores. De esta manera puedo obtener información del hilo. Todo esto para evitar el uso de variables globales.

Respuestas a la pregunta(5)

Su respuesta a la pregunta