Hallo 
habe zwei Probleme mit realloc(), erstens wird der reservierte Speicher nicht größer nach dem reallocieren und zweitens kommt nach dem dritten reallocieren ein Fehler.
Folgender Code:
Ist das ein Fehler drinn, oder habe ich einfach etwas nicht beachtet? Hoffe ihr könnt mir schnell helfen.
LG nailos

habe zwei Probleme mit realloc(), erstens wird der reservierte Speicher nicht größer nach dem reallocieren und zweitens kommt nach dem dritten reallocieren ein Fehler.
Folgender Code:
Code:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <assert.h>
#define LEN 10
typedef struct{
int i;
char s[LEN];
}str;
void fkt(str *strptr){
int ibuf;
char sbuf[LEN];
int rd, i = 0;
char ende = 'j';
do{
if(ende == 'n'){
strptr = (str *)realloc(strptr, sizeof(*strptr) + sizeof(str));
assert(strptr != NULL);
//hier lasse ich mir die Größe des reservierten Speichers anzeigen
printf("DEBUG: size: %lu\n", sizeof(*strptr)/sizeof(str));
i += 1;
}
do{
char c;
printf("Gib i und s ein.\n");
rd = scanf("%d %s", &ibuf, (char*)sbuf);
do{
c = getchar();
}while(c != '\n');
}while(rd != 2);
strptr[i].i = ibuf;
strncpy(strptr[i].s, sbuf, LEN);
do{
char c;
printf("Ende? j/n\n");
rd = scanf("%c", &ende);
do{
c = getchar();
}while(c != '\n');
}while(rd != 1);
}while(ende == 'n');
}
void prs(str *strptr){
int i;
for(i = 0; i < (sizeof(*strptr)/sizeof(str)); i++){
printf("Ausgabe: i = %d; s = \"%s\"\n", strptr[i].i, strptr[i].s);
}
}
int main(void){
str *sptr = malloc(sizeof(str));
fkt(sptr);
prs(sptr);
free(sptr);
sptr = NULL;
return 1;
}
Ist das ein Fehler drinn, oder habe ich einfach etwas nicht beachtet? Hoffe ihr könnt mir schnell helfen.
LG nailos
Zuletzt bearbeitet: