Hi,
It'll be on stack i suppose and in general all variables declared inside a function will be on stack as well.
You can print the address of where a resides and print the value of stack pointer (SP) you then should have the same base address ...
Code:
unsigned long sp(void) {
asm("movl %esp, %eax");
}
void main() {
int *a;
a=malloc(16*sizeof(int));
printf ("addr of a is %p, sp is %p and malloc is %p\n",&a,sp(),a);
}
Of course i assume you're on intel-based

!