Inside a function, I create a char array which I pass to a library function that fills it with a value. I then pass this back to the caller. When I do it by creating an array with malloc (and then freeing it outside the function), it only fills the array with the first 3 characters. When i create it as a local array, it works (and simply warns me I'm passing a local array back out).

Code:
//This does NOT Work:
char* getStringWithMalloc(...elided...)
{
      char* data = ( char* ) malloc( 256 * sizeof( char ) );
      fillArray( data );
      return data;
}

//This DOES work:
char* getString(...elided...)
{
      char data[256];
      fillArray( data );
      return data;
}

int main(...)
{
      //Does not work, only grabs first three characters
      char* value = getDataWithMalloc(...);
      printf( value );
      free( value );

      //This DOES work
      printf( getDataWithMalloc(...) );
}