Распределение структуры с элементом массива переменной длины

Я знаю, что могу сделать new char [n] , чтобы создать массив из n симв. Это работает, даже если n не является постоянной времени компиляции.

Но, допустим, мне нужна переменная размера, за которой следует n символов:

Моя первая попытка это следующая:

struct Test
{
  std::size_t size;
  char a[];
};

Однако, похоже, новый тест [n] не делает то, что Я ожидаю, и вместо этого выделяет n размер s.

Я также обнаружил, что sizeof (std :: string) равно 4 в ideone, поэтому кажется, что он может выделить как размер, так и массив символов в одном блоке.

Есть ли способ достичь того, что я описал (предположительно, что уже делает std :: string )?

8
задан Clinton 3 October 2011 в 23:24
поделиться