Array während der Laufzeit vergrößern
-
Hi,
wie kann ich ein Array um ein element während der Laufzeit vergrößern??
mein bisheriger Verisuch sieht so aus:
format_c@manchester:~> cat test.c && g++ test.c -otest && ./test && rm test #include <stdio.h> #include <stdlib.h> int main () { int array[2] = {1,2}; printf("Aktuelle Groesse: %d\n",sizeof(array)); realloc(*&array,sizeof(int)); printf("Aktuelle Groesse: %d\n",sizeof(array)); return 0; } Aktuelle Groesse: 8 Segmentation fault format_c@manchester:~>
Gruß Alex
-
benutz std::vector, da musste dich garnicht um die größe scheren.
realloc funktioniert aber auch nur mit speicherplatz der vorher mit alloc geholt wurde, also auf dem heap liegt. dein array ist aber ein stackobjekt.
-
#include <vector> typedef std::vector<int> IntVec; void func( void ) { IntVec v; v.push_back( 10 ); v.push_back( 20 ); v.resize( 10 ); v[2] = 30; v[3] = 40; }