Der folgende Codeausschnitt wurde erstellt, um zu ermitteln, um wie viel mehr Speicherbytes jede Aktion string-append der Zeichenfolge hinzugefügt wird.Die Kapazität einer Zeichenfolge erhöhen
#include <iostream>
#include <string>
#include <unordered_map>
#include <sys/time.h>
#include <arpa/inet.h>
using namespace std;
typedef unsigned short uint16;
typedef unsigned int uint;
int main (int argc, char *argv[]) {
const char *p = NULL;
string s = "";
for (int i=0; i<1050; i++) {
s += "a";
if (s.c_str() != p) {
printf("%5d\n", i);
p = s.c_str();
}
}
return 0;
}
Der Ausgang ist
0
1
2
4
8
16
32
64
128
256
512
1024
So das Ergebnis ganz klar zeigt es die doppelte Speicher der Zeichenfolge jedes Mal (mindestens).
Die Frage ist, wie Sie den angegebenen Speicherplatz (etwa 2000 Bytes) zu einer vorhandenen Zeichenfolge hinzufügen, so dass man viele Zeichenfolgen anhängen kann, ohne einen freien/malloc auszulösen.
Danke.
[Verwenden Sie 'std :: basic_string :: reserve'] (http://en.cppreference.com/w/cpp/string/basic_string/reserve) – Rakete1111
@ Rakete1111: Verwenden Sie den Antwortabschnitt. –
@LightnessRacesinOrbit ok, ich werde :) – Rakete1111