PARQUET-1333: [C++] Reading of files with dictionary size 0 fails on Windows with bad_alloc
PARQUET-1333: [C++] Reading of files with dictionary size 0 fails on Windows with bad_alloc

The call with size 0 ends up in arrows memory_pool, https://github.com/apache/arrow/blob/884474ca5ca1b8da55c0b23eb7cb784c2cd9bdb4/cpp/src/arrow/memory_pool.cc#L50, and the according allocation fails. See according documentation, https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc. Only happens on Windows environment, as posix_memalign seems to handle 0 inputs in unix environments.

Author: Philipp Hoch <p.hoch@celonis.com>

Closes #472 from philhoch/bugfix-cover-empty-dicitionary-size-on-windows and squashes the following commits:

0be10bc [Philipp Hoch] account for total_size being 0, as _alligned_malloc with size 0 raises error on Windows environment

apache/parquet-cpp,wesm/parquet-cpp,apache/parquet-cpp,majetideepak/parquet-cpp,majetideepak/parquet-cpp,wesm/parquet-cpp,majetideepak/parquet-cpp,wesm/parquet-cpp,apache/parquet-cpp,wesm/parquet-cpp,wesm/parquet-cpp,apache/parquet-cpp,majetideepak/parquet-cpp,majetideepak/parquet-cpp,apache/parquet-cpp,majetideepak/parquet-cpp,apache/parquet-cpp,wesm/parquet-cpp