I think what he needs to know is how they are handled differently in an OS context. In the most simple terms, staticly allocated variables are stored on the stack, and dynamically allocated variables are stored on the heap.
For instance, if I have a C program that has something like this:
char foo = 'a';
then the OS knows to allocated exactly one byte for the storage of variable "foo" at execution time. This allocation space will be the same every time the program is run, thus it is termed "staticaly allocated".
If I have something like:
if(rand(1) > .5)
MyObj Bar = new Quux;
then the storage for the variable "Bar" will be allocated on the heap, since there's no way the OS can know how much space will be needed. Half of the time, no extra space will be needed, and half of the time, sizeof(Quux) bytes will have to be allocated.
Clear as mud?