Kernel Syntax

Hi gys,
I know that the syntax for a global function call is like this:

dim3 threads(16,12);
dim3 blocks (16,16);
function<<<blocks, threads>>>(unsigned char *out);

Recently i came accross a new invocation for global function like this:

dim3 threads(16,12);
dim3 blocks (16,16);
int labelsShareSize = sizeof(int)(threadsX+2)(threadsY+2);
int segShareSize = sizeof(int)(threadsX+2)(threadsY+2);
function<<< blocks, threads, labelsShareSize + segShareSize>>>( unsigned char *out);

Can anyone tell me what does the third parameter for kernel invocation do ?

Number of bytes of dynamically allocated shared memory per block. See Appendix B.16 for a further explanation. (There’s actually a fourth possible parameter as well!)

Thanks. The info is very detailed in the manual…