Kann keinen String in Strukturelement hineinkopieren.

Gast #3425778
Lesenswert?

Das Programm stürzt dauernd ab, ich weiß aber nichr wieso. Keine 
Fehlermeldungen, nichts!!!!! Aber was mache ich falsch?
1
typedef struct entry_s{
2
    char songtitle[20];
3
    char interpreter[20];
4
} entry_t;
5

6
typedef struct heap_s{
7
    entry_t *entries;
8
    long size_s;
9
    long next;
10
} heap_t;
11

12
int main()
13
{
14
    heap_t *meinHeap;
15
    meinHeap = createHeap(4);
16
    strcpy( (*(meinHeap[0].entries)).interpreter, "Martin");
17
    deleteHeap(meinHeap);
18
    return 0;
19
}
20

21
void deleteHeap(heap_t *heap){
22
    free(heap);
23
    if(heap != NULL)
24
        heap = NULL;
25
    printf("Heap erfolgreich freigegeben!");
26
}
27

28
heap_t *createHeap(long size_s){
29
    heap_t *meinHeap;
30
    if( (meinHeap = calloc(size_s, sizeof(heap_t)))  == NULL )
31
       printf("Fehler Beim Alloziieren von Speicher!\n");
32
    else{
33
        printf("Speicher erfolgreich alloziiert!\n");
34
        return meinHeap;
35
    }
36
    return NULL;
37
}

Hier ist wohl der Fehler verborgen, aber ich finde ihn nicht:
1
strcpy( (*(meinHeap[0].entries)).interpreter, "Martin");
Gast #3425790
Lesenswert?

Martin schrieb:
> typedef struct heap_s{
>     entry_t *entries;
>     long size_s;
>     long next;
> } heap_t;

Der Struct-Member *entries hat keine Größe, sondern ist nur ein Pointer 
der Struktur entry_t der ins Nichts zeigt.
Musst Du entweder ändern in entries (also das Sternchen weg) oder beim 
malloc
explizit Speicherplatz dafür holen.

So sehe ich das.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren