Unten ist meine einfache Code-Snippet.Variable Länge Array Speicherplatz in C/C++
#include <iostream>
using namespace std;
bool testAllocArray(const unsigned int length)
{
char array[length]; //--------------------------(1)
return true;
}
int main(int argc, char** argv)
{
testAllocArray(1024);
return 0;
}
Bei Anweisung (1) scheint das Array nicht im Heap zugeordnet zu sein. Ich dachte, es wäre auf dem Haufen verteilt. Wenn es im Stapel zugeordnet ist, führt dies nicht zum Absturz einiger unechter Wertlänge, da die Stapelgröße ziemlich klein ist?
Danke Stian. Ist das nicht ein Problem? Weil die Länge einen beliebigen Wert bis zum Maximum ihrer Grenze haben kann. – Suresh
Wenn die Länge eine sehr große Zahl ist, kann der Anwendungsstapel überlaufen, was je nach CPU und Betriebssystem zu einem Segmentierungsfehler oder einem definierten Verhalten führt. Aber die meisten heutigen Systeme können wahrscheinlich einige Megabyte Speicher auf dem Stack haben –