Was stimmt nicht mit dieser for-Schleife?



  • Hallo, was einer, warum der Debugger mir das Programm abbricht, wenn ich diese Schleife durchlaufe? Hab keine Ahnung, warum...

    CString *rgelems; // Pointer to CString elements
    // Now lock the array for editing and get a pointer
    // to the raw elements
    
    SafeArrayAccessData(v.parray, (void**)&rgelems);
    
    CString ebike = "Ebike";
    // Loop through setting the elements
    for (int c = 0; c <= 1; c++)
    rgelems[c] = ebike;
    

    ...wäre nett, wenn mir da einer helfen könnte.

    Gruss,

    chullain



  • @chullain,
    ich habe SafeArrayAccessData noch nie verwendet. Aber so wie ich die MSDN verstanden habe, erstellen diese Funktion ein Array. Daher hast du zwar ein Array jedoch ohne Speicher für die einzelnen Elemente.

    Mit

    rgelems[c] = ebike;
    

    versuchst du nun auf uninitialisierten Speicher zuzugreifen was folglich mit einer Access Violation endet. Daher musst du bevor du dem Element den String zuweist erstmal genügend Speicher für dieses Element reservieren.


Anmelden zum Antworten