Christoph: C - speichersparen/ansatz

Beitrag lesen

Moin.

was  macht man aber in C in solchen fällen? arrays variabler-länge lassen sich ja nicht definieren, bzw - ich weiss nciht wie,
was wäre der ansatz?

C99 erlaubt Arrays variabler Länge für Variablen mit automatischer Lebensdauer (d.h. Variablen, die innerhalb von Funktionen ohne den Spezifizierer static deklariert werden).

Solche Arrays werden auf dem Stack abgelegt und nicht wie bei den genannten Alternativen malloc() und calloc() auf dem Heap.

Ein Beispiel:

  
void foo(size_t n)  
{  
    int bar[n]; // I'm a variable-length array  
    for(size_t i = 0; i < n; ++i)  
    {  
        // do stuff with bar[i]  
    }  
}

Damit der GCC das unterstützt, muss eventuell ein -std=c99 oder -std=gnu99 als Parameter mitgeliefert werden.

Christoph