L'allocation de structure de longueur variable membre du groupe

Je sais que je peux faire new char[n] pour créer un tableau de n caractères. Cela fonctionne même lorsque n n'est pas une compilation constante de temps.

Mais disons que je voulais une taille variable suivi de n caractères:

Ma première tentative à cet égard est la suivante:

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

Cependant, il semble new Test[n] ne fait pas ce que j'attends, et au lieu alloue n sizes.

J'ai également constaté que sizeof(std::string) est de 4 à ideone, de sorte qu'il semble qu'on puisse attribuer à la fois la taille et le char tableau dans un seul bloc.

Est-il un moyen que je puisse réaliser ce que j'ai décrit (sans doute ce que std::string déjà fait)?

Si vous utilisez VLAs c'est pas du C++. OK, je vois le titre qui a trompé moi.
Je pense que nous avons une série downvoter sur cette question, les réponses de...
Que penser d'un vecteur? Ou un membre de type string?
Assez facile à faire cuire votre propre classe qui alloue un tableau dynamique, mais quel est le problème avec juste l'aide de string ou vector<char>?
"sizeof(std::string) est de 4" - wat

OriginalL'auteur Clinton | 2011-10-03