Usa la versione dell'array :
auto testData = std::unique_ptr<unsigned char[]>{ new unsigned char[16000] };
O con c++14, una forma migliore ( VS2013 ce l'ha già ):
auto testData = std::make_unique<unsigned char[]>( 16000 );
Utilizzando il T[] specializzazione:
std::unique_ptr<unsigned char[]> testData(new unsigned char[16000]());
Nota che, in un mondo ideale, non dovresti usare esplicitamente new per istanziare un unique_ptr , evitando una potenziale trappola per la sicurezza delle eccezioni. A tal fine, C++14 ti fornisce il std::make_unique modello di funzione. Vedi questo eccellente GOTW per maggiori dettagli. La sintassi è:
auto testData = std::make_unique<unsigned char[]>(16000);