Sinceramente non capisco perchè ti interessi capire se mio_punt è nello stack o nell'heap.
Ho capito che se mio_punt è NULL allochi te della memoria che poi comunque devi liberare perchè il puntatore alla memoria allocata non torna al chiamante (ne come return ne come parametro perchè e' un puntatore semplice e non un doppio puntatore).
Se mio_punt non è NULL, mi viene in mente che dopo che hai elaborato mio_punt deallochi la memoria all'interno della funzione e quindi in questo caso dovresti sapere se era allocata non malloc.
Credo però che se tu stabilisci che una funzione accetta un puntatore che deve essere stato allocato con malloc e l'utilizzatore ti passa un puntatore ad una variabile nello stack allora è un pisquano e un bel segfault gli sta bene
Inoltre considera che uno ti potrebbe passare l'indirizzo di una variabile statica o di una variabile globale che non stanno nello stack.
Se proprio vuoi aiutare l'utilizzatore potresti definirti un tuo pool di memoria e richiedere che solo la memoria che proviene dal tuo pool può essere usata in mia_funzione; la verifica a questo punto la puoi fare perchè gestisci il tuo heap e quindi puoi aggiungere delle strutture di controllo per ogni porzione di memoria allocata. Magari addirittura diventa più efficente della malloc