Оператор вставки токена (##) используется, когда вам нужно сделать один токен из двух (или более) отдельных токенов.
без него, т.е.
#define ALLOC(x,y) x _y; x* y = &_y;
ALLOC(a,b)
расширится на:
a _y; a* b = &_y;
потому что препроцессор знает, что нужно заменить y на b, а _y - это еще один токен.
с оператором ## (т. Е. Ваш пример)
ALLOC(a,b)
расширится на:
a _b; a* b = &_b;
## соединяет токен _
и токен b
для формирования токена _b