Hey everyone, I have a problem that is really puzzling...

I have the following code:
Code:
	// Determine size of transfer
	packageSize = strlen( TxBuffer );
	cout << "packageSize "<< packageSize << endl;
	char* RxBuffer = new char [ packageSize ];
	cout << "RxBuffer " << strlen ( RxBuffer ) << endl;
	// Zero out the Rx buffer
	memset( RxBuffer, 0xa5, packageSize );
	cout << "packageSize "<< packageSize << endl;
	cout << "RxBuffer " << strlen(RxBuffer) << endl;
When executed with some TxBuffer length 16 i get this:
packageSize 16
RxBuffer 32
packageSize 16
RxBuffer 32

When I change my code to

Code:
	// Determine size of transfer
	packageSize = strlen( TxBuffer );
	cout << "packageSize "<< packageSize << endl;
	char* RxBuffer = new char [ packageSize/2 ];
	cout << "RxBuffer " << strlen ( RxBuffer ) << endl;
	// Zero out the Rx buffer
	memset( RxBuffer, 0xa5, packageSize/2 );
	cout << "packageSize "<< packageSize << endl;
	cout << "RxBuffer " << strlen(RxBuffer) << endl;

The output is like this:

packageSize 16
RxBuffer 24
packageSize 16
RxBuffer 24

I'm not sure why the sizes are even different, and even more strangly, why is dividing a 32 size by 2 giving me 24?