Realloc un tableau int

Je suis en train de créer un tableau pour stocker un int, alors quand un autre int est ajouté augmentation de la taille de tenir un autre int.. et ainsi de suite..

Je sais que c'est pas une utilisation efficace des realloc, mais c'est la preuve que sur le concept, plus qu'autre chose. Juste pour obtenir ce travail me permettrait d'optimiser et d'être en mesure de l'appliquer à quelque chose d'utile. Un exemple de travail. Le problème vient quand je l'appelle la fonction d'impression et il est juste de segmentation. Toute aide serait appréciée.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
typedef char String[100];
void begin(int *);
void add(int *, int);
void print(int *);
int tempcount=0;
int main(void)
{
int *n=NULL;
String menu;
begin(n);
while(true)
{
scanf("%9s", menu);
if(!strcmp("a", menu)) //add
{
int i=0;
scanf("%d", &i);
add(n, i);
}
else if(!strcmp("p", menu)) //print
{
print(n);
}
else if(!strcmp("q", menu)) //quit
{
free(n);
break;
}
}
return 0;
}
void begin(int *n)
{
n=malloc(sizeof(int));
if(n==NULL)
{
printf("Error in malloc!");
return;
}
n[0]=0;
printf("Added %d \n", n[0]);
}
void add(int *n, int numToAdd)
{
static int sizeCount=0;
sizeCount++;
tempcount=sizeCount;
int *temp;
temp=realloc(n, (sizeCount+1) * sizeof(int));
if(temp==NULL)
{
printf("Error in realloc!");
return;
}
n=temp;
n[sizeCount]=numToAdd;
printf("Added %d \n", n[sizeCount]);
}
void print(int *n)
{
int i;
for(i=0; i<tempcount; i++)
{
printf("%d ", n[i]);
}
}
Pourquoi pensez-vous realloc retourne un pointeur?
parce qu'il n'?
Ceci est lié et donc d'intérêt: stackoverflow.com/q/13098037/856199
realloc retourne un pointeur car il ne peut pas garantir la "redimensionnée" bloc de mémoire sera dans le même endroit que l'ancien. Si elle a pour déplacer le bloc, il a besoin d'une façon de vous dire où le nouveau bloc est.
La prochaine fois demandez "Que pensez-vous est la raison..." pour éviter les malentendus.

OriginalL'auteur Draconian Times | 2012-11-02