On the receiver side, the line
pBuffer[MAX_BUFFER_SIZE] = new char;
is wrong for two reasons: (a) It accesses the array at an invalid position (the highest index available is MAX_BUFFER_SIZE -1 ), (b) 'new char' allocates a 'char' object, which creates a memory leak and is totally unnecessary. This is not C# :-)
If you want to initialize the last cell of your buffer with a NULL character, then use
pBuffer[MAX_BUFFER_SIZE-1] = 0;
The next error is when you cast your buffer into a CStringArray:
pStrArray = (CStringArray*)pBuffer;
You will have to parse your buffer and assign the elements of your string array one-by-one. Simply casting a char* into a CStringArray* doesn't work.