SIGSEGV ptrString



  • @manni66 sagte in SIGSEGV ptrString:

    @Abe sagte in SIGSEGV ptrString:

    Names[I]

    Da ist nichts das eine Adresse speichern könnte. Names ist NULL!

    Hunderpunkte Schrelog 😂
    und Wie schaffe Ich es nun das Names[I] auf eine Addresse zeigen Kann ?

    char* Names[256] = (char*)malloc(sizeof(char)*Count); //  Sollte Speicher fĂŒr char Names[Adresse die ich frei rĂ€umen wollte ] 
    //[256] // sollte dann in der forschleife genauer geschaffen werden Ja etwas unlogisch und verzweifelt  
    char** Names  = (char**)malloc(sizeof(char)*256*tmp) // sollte platz fur tmp* strings schaffen auch War das logischste was ich versucht habe 
    
    char Names[Count][256] ; // Das selbe  Wollte den Fehler anders als mit =NULL wegbekomm 
    // realloc half  Mittels char**Names = NULL; Names = (char**)realloc(sizeof(char)*256*tmp) Eigentlich auch sinlos 
    // oder verwendet wie malloc oben 
    

    ich möchte halt auch die auf dem jeweiligen system vorhanden layer und extentions verwenden



  • @Abe Dann erklĂ€r mal fĂŒr jeden deiner Versuche, was genau er machen soll.

    Im Übrigen: sizeof(char) ist immer 1.



  • typedef char LayerName[VK_MAX_EXTENSION_NAME_SIZE];
    
    ...
        LayerName *Names = malloc(Count*sizeof*Names);
        for(uint32_t i=0; i<Count; i++)
            strcpy(Names[i],Props[i].layername);
        for(uint32_t i=0; i<Count; i++)  /* Testausgabe */
            puts(Names[i]);
        free(Names);
    ...
    


  • @Abe sagte in SIGSEGV ptrString:

    schlÀgt Kdevlop vor Names[Count][256]

    Das ist ebenfalls sinnbefreit, da VLA.
    Und sowas schlÀgt KDevelop vor?!



  • char** Names = NULL  //SchlĂ€gt es vor Names[Count][256] war meine idea
    

    Danke auf jeden fall das sieht auch Etwas logischer aus.
    Eine frage eribt sich noch

    // Warum funktioniert
    typedef char[256] str;
    str*Name = malloc(sizeof(char)*3*256) // beispiel
    //und 
    char*Names[256] = malloc(sizeof(char)*3*256)
    // nicht
    

    Das stell doch das selbe dar oder nicht?



  • @Abe
    Das ist nicht dasselbe,

    1. ist ein Zeiger auf ein char-Array
    2. ist ein Array von char-Zeigern

    Ein Zeiger ist kein Array, ein Array ist kein Zeiger. (Wann welche Besonderheiten gelten, sagen dir C-Profis im Schlaf, alle anderen (inkl. C++ler) parlieren zwar darĂŒber, haben aber keine Ahnung davon)



  • Alles klar wir wohl noch etwas dauern bis ich das richtig verstanden habe.



  • @manni66 sagte in SIGSEGV ptrString:

    Im Übrigen: sizeof(char) ist immer 1.

    Und sizeof(char*) ist was anderes.



  • @DirkB sagte in SIGSEGV ptrString:

    @manni66 sagte in SIGSEGV ptrString:

    Im Übrigen: sizeof(char) ist immer 1.

    Und sizeof(char*) ist was anderes.

    Tja nur das im vom Abe gezeigten code nirgends sizeof(char*) auftaucht.



  • @firefly sagte in SIGSEGV ptrString:

    Tja nur das im vom Abe gezeigten code nirgends sizeof(char*) auftaucht.

    Aber an manchen stellen sollte.


Log in to reply