Standard-Einfügen in einen Vektor ist keine Standard-Initialisierung?

Einer derstd::vector Konstruktoren ist festgelegt als, Schwerpunkt meiner:

explicit vector(size_type n, const Allocator& = Allocator());
Auswirkungen Konstruiert einvector mitn default-insert Elemente mit dem angegebenen Zuweiser.
Erfordert: T mussDefaultInsertablein*this.
Komplexität Linear inn.

Ist die Standardeinfügung in irgendeiner Weise mit der Standardinitialisierung verbunden? Auf diesem Code:

std::vector<char> v(66000);

gcc 5.2 optimiert ergibt:

  400d18:   bf d0 01 01 00          mov    $0x101d0,%edi
  400d1d:   48 83 c5 01             add    $0x1,%rbp
  400d21:   e8 1a fd ff ff          callq  400a40 <operator new(unsigned long)@plt>
  400d26:   31 f6                   xor    %esi,%esi
  400d28:   48 89 c3                mov    %rax,%rbx
  400d2b:   ba d0 01 01 00          mov    $0x101d0,%edx
  400d30:   48 89 c7                mov    %rax,%rdi
  400d33:   e8 38 fc ff ff          callq  400970 <memset@plt>

memset? Was sindSi hier machen? Ich dachte, dies sollte einfach das Äquivalent von @ tnew char[66000] ... das heißt, keine Initialisierung. clang 3.7 gibt auch ein @ amemset.

Warum gibt es einmemset Hier? Ist dies in Bezug auf den Standard korrekt? Wenn ich 66000 wertinitialisierte Zeichen haben wollte, habe ich doch schon diesen Konstruktor:

std::vector<char> v(66000, '\0');

Antworten auf die Frage(2)

Ihre Antwort auf die Frage