tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
984
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Shadow Shadow ist offline Mitglied Silber
    Registriert seit
    Feb 2002
    Beiträge
    67
    Hallo miteinander!

    Ich habe gerade ein ziemlich interessantes Problem, wo ich gerade nicht wirklich durchsehe.


    Ich habe folgende Schleife:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    uint32 *prgResult = (uint32*)malloc(sizeof(uint32) * viWidth);
    int iRow = 10;
     
    while(x)
    {
             befuellen(prgResult, iRow);
             speichern(prgResult, &iRow);
    }


    In "befuellen" wird der etwas prozessiert und das ergebnis in prgResult gespeichert


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    uint32 **prgX = 0;
    // hier nur abgekürzt hingeschrieben:
    prgX = createMatrixUnit32(15,15);
     
    uint32** createMatrixUint32(int iSizeX, int iSizeY) 
    { 
        uint32** pMatrix; 
        pMatrix = (uint32**)malloc(sizeof(uint32*) * iSizeX); 
        for(int i = 0; i < iSizeX; i++) { 
            pMatrix[i] = (uint32*)malloc(sizeof(uint32) * iSizeY); 
        } 
        for(int i = 0; i < iSizeX; i++) { 
            for(int j = 0; j < iSizeY; j++) { 
                    pMatrix[i][j] = 0; 
            } 
        } 
        return pMatrix; 
    } 
     
     
    void befuellen(uint32 *pResult, int iRow)
    {
            
        for (int j = 1; j < iCountColumns-1; j++)
        {
        // prgX ist eine Matrix die im vorherein bereits allokiert wurde - dies wird persistent gespeichert!
                         // hier steht auch mein ergebnis drinnen
                                               prgX[iRow][j] = 10 + 1 + 1; // zum beispiel
            memcpy(&pResult[j],&prgX[iRow][j], sizeof(uint32));
        }
    }

    danach kommt das ergebnis zurück, jedenfalls ist beim debuggen, das richtige ergebnis in pResult[j] (nach dem memcpy).

    wenn ich nun zur funktion "speichern" komme, ist dieser vektor aber mit lauter nullen befüllt!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    void speichern(uint32 *pResult, int *iRow)
     
                         for (int j = 0; j < 10; j++)
        {
            
     
            uint32 iY = pCNNResult[j];
            if (iY == 0)
                int y = 0; // kommt immer hier her
     
            prgYBuffer[*piRow][j] = iY; // immer 0
        }
    }

    Hat jemand von euch ne idee, woran es liegen könnte?
    Ich habe den großteil des codes weggelassen und nur das nötigste gepostet. aber im prinzip ist der ablauf genau so. zuerst in einer funktion befüllen lassen, dann zurück, dann einer anderen funktion übergeben und speichern lassen.

    Vielen Dank für jede Hilfe

    lg
    Geändert von Shadow (11.03.10 um 22:23 Uhr)
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo,

    hab deinen Code nur kurz überflogen, aber vielleicht hilft das ja schon weiter:

    Zitat Zitat von Shadow Beitrag anzeigen
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    uint32 *prgResult = (uint32*)malloc(sizeof(uint32) * viWidth);
    int iRow = 10;
     
    while(x)
    {
             befuellen(uint32 *prgResult, &iRow);
             speichern(uint32 *prgResult, iRow);
    }
    Hast du wirklich uint32 *prgResult als Parameter da stehen? Das sieht mir etwas komisch aus. Der Signatur von speichern nach zu urteilen solltest du beim Aufruf als zweiten Parameter die Adresse &iRow übergeben und nicht iRow.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    Shadow Shadow ist offline Mitglied Silber
    Registriert seit
    Feb 2002
    Beiträge
    67
    Hallo!

    Danke für die Antwort! Hab noch mal nachgeguckt, ich hab mich nur hier im Forum vor lauter Eile vertippt.
    Ist nun korrigiert.

    lg
     

  4. #4
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Ich werd aus deinem Code nicht schlau. Was haben befuellen und speichern miteinander zu tun? Was ist pCNNResult? Was ist prgYBuffer? Hast du da vielleicht ein paar Namen durcheinander gebracht?
     

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 17.11.09, 14:24
  2. Antworten: 0
    Letzter Beitrag: 06.05.08, 18:03
  3. pointer auf funktion
    Von xkris im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 02.04.07, 19:40
  4. Antworten: 8
    Letzter Beitrag: 23.10.05, 01:00
  5. PHP Funktion in JavaScript Funktion aufrufen, aber wie ?
    Von blumshuett im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 24.03.05, 11:32