004
27.06.2005, 15:49 Uhr
virtual
Sexiest Bit alive (Operator)
|
@Johnsilver
1. Also die erste Option ist, mal zu schauen, ob Dein Compiler den C Standard von 1999 unterstützt, da kann man das nämlich so machen, wie du willst. Oft ist es aber so, daß die C99 Features erst dann aktiv sind, wenn man entsprechende Compiler flags setzt. Bei gcc geht es 100%, den meisten nativen unix Compilern ebenfalls.
2. Die zweite Option ist alloca zu verwenden. Ist nicht auf wirklich allen Systemen vorhanden, aber auf fast allen, leider aber nicht Standard:
C++: |
#include <alloca.h>
int func(int arragr) { int* array = alloca(arraygr*sizeof(*array)); ... }
|
Der Vorteil von alloca gegenüber malloc /new[] ist, daß Du dich nicht um die Speicherfreigabe kümmern brauchst.
3. Oder du nimmst new[] bzw. malloc (C++ bzw. C):
C++: |
// C++ int func(int arragr) { int* array = new int[arraygr]; ... delete [] array; } // C int func(int arragr) { int* array = malloc(arraygr*sizeof(int)); ... free(array); }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |