Wie erstelle ich ein array in C++, die auf dem heap statt auf dem stack?

Ich habe ein sehr großes array zurück, das muss 262144 Elemente in der Länge (und potentiell viel größer in Zukunft). Ich habe versucht, die Zuweisung der Arrays auf dem stack etwa so:

#define SIZE 262144
int myArray[SIZE];

Jedoch scheint es, dass, wenn ich versuchen, und fügen Sie Elemente an einem bestimmten Punkt, die Werte sind unterschiedlich, wenn ich versuche auf Sie zuzugreifen. Ich verstehe, dass dies ist, weil es nur eine endliche Menge an Speicher auf dem stack, im Gegensatz zu den Haufen, die hat mehr Speicher.

Ich habe Folgendes versucht, ohne viel Glück (nicht kompiliert):

#define SIZE 262144
int *myArray[SIZE] = new int[SIZE];

Und dann zog ich mit malloc, aber ich Frage mich, ob es war eine C++ - ähnliche Art und Weise, dies zu tun...

#define SIZE 262144
int *myArray = (int*)malloc(sizeof(int) * SIZE);

Sollte ich gehen Sie einfach mit malloc?

  • ändern "myArray[GRÖßE]", "myArray" in deinem zweiten code-block.
  • Vijay, das ist nicht eine Frage des Lernens die syntax. Die erste option ist richtig, außer für die Größe, und die zweite option ist ein normaler bug, der es verdient, erwähnt zu werden. Und außerdem ist diese Seite auch zu helfen, wenn jemand nicht verstehen, die syntax?
  • Um ein syntax-Fehler in einer Frage nicht eine schlechte Frage.
  • Gerade aus den FAQ: Keine Frage ist zu trivial oder zu "newbie". Seien Sie tolerant gegenüber anderen, die nicht wissen, was du alles weißt. Bringen Sie Ihren Sinn für humor.
  • Vijay, vielleicht ist diese Seite für Sie nicht. Foren sind oft der beste Ort, um zu starten flame wars, Sie sollten überprüfen Sie Sie heraus. Meine Erfahrung von Stack Overflow wurde für die Nutzer zu Fragen, was Sie fühlen, wie zu Fragen, unabhängig davon, wie newbish.
InformationsquelleAutor Nick Bolton | 2009-03-24
Schreibe einen Kommentar