2 Stimmen

Wie man Daten global in einer Struktur für mehrere Funktionen speichert

Ich habe diese einfache Struktur am Anfang meiner CPP-Datei definiert:

struct sServersArray
{
TCHAR sName[128];
};
struct sServersArray sServers[1024] = {0};

Was ich mache, ist Daten im Feld .Name in einer Funktion zu speichern und die Daten in anderen Funktionen zu lesen.

Ich weiß, dass dies wertvollen Speicherplatz (vom Stapel/Heap, ich weiß nicht genau welcher oder warum) beansprucht und ich weiß, dass es irgendwie verschoben werden sollte - vielleicht in eine Klasse?

Kann mir jemand zeigen, wie ich diese Struktur in eine Klasse verschieben und meine anderen Funktionen darauf zugreifen lassen kann? Ich mache mir Sorgen, dass ich zu viel Stapel-/Heap-Speicherplatz verwende und weiß, dass dies nicht der richtige Weg ist, um dies zu tun. Vielen Dank!

2voto

John Dibling Punkte 96619
struct sServersArray
{
  std::string sName;
};

std::vector sServers;

2voto

Fred Foo Punkte 341230

Globale Daten werden in einem separaten Abschnitt des Speichers, nicht auf dem Stapel, nicht auf dem "Heap" (freier Speicher) alloziert.

Einfache Lösung: Servernamen in einen std::vector einlesen und diesen per Referenz übergeben. Auf diese Weise werden Ihre Daten im Heap alloziert, es gibt keine globalen Variablen mehr, um sich Sorgen zu machen, und Sie können die willkürlichen Längenbeschränkungen beseitigen.

(Sie könnten auch einen globalen vector erstellen, aber bitte tun Sie das nicht. Globale Daten sind ein Codegeruch.)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X