Speicher Allokation



  • moin,

    ich bereite mich gerade auf eine c-klausur vor und hätte einmal eine frage:

    Gegeben sei das folgende Programm:

    *#include <stdio.h>

    char * tab[] = {"Dreyfuss","Kimball","dwelt","Kodachrome","McAllister"};
    char ** ptab[] = { tab+4 , tab+3 , tab+2 , tab+1 , tab};
    char *** ppp = ptab;

    int main( int argc , char *argv[] ){
    printf("%s\n", ((ppp+3)-1)+4);
    printf("%s\n", ppp[3][0]+3);
    printf("%s\n", ((ppp+2))+1);
    printf("%s\n", (++ppp+8);
    printf("%s\n", (--ppp+5);
    return 0
    }

    Wieviel Speicher wird von den Variablen tab, ptab und ppp und den in den Initialisierungen vorkommenden Konstanten benötigt? Geben Sie hierfür einen Ausdruck mit dem sizeof Operator an.*

    Das ist nun eine Aufgabegabe aus einer Klausur!

    Meine Lösung ist bestimmt nicht richtig und ich wollte fragen, ob jemand die Antort berechnen kann 😃

    mein Ansatz ist:

    *40*sizeof(char)+11*sizeof(char )

    was bestimmt nicht richtig ist.

    Danke im voraus



  • grob geschätzt:

    texte: sizeof(char) * (40 + 5)
    inhalt von tab: 5 * sizeof(char*)
    tab: sizeof (char**)
    ptab: sizeof (char***)
    ppp: sizeof (char***)



  • sizeof(tab) + sizeof(ptab) + sizeof(ppp)
    

    Den Speicherverbrauch der Stringliterale kannst du mit sizeof nicht bestimmen, da dir durch die Array (char[]) nach Zeiger (char*) Umwandlung die benötigten Compilezeitinformationen verlorengehen.


Anmelden zum Antworten