Memcpy scheint nicht zu funktionieren



  • Hallo!
    Ich habe das Gefühl, dass ein memcpy aufruf nicht das macht, was er machen sollte:

    memcpy(output,m_lastLayerOutput,m_nOutputs);

    output[0] wird mir beim Debuggen als -4e008 angezeigt, obwol m_lastLayerOutput[0] 357 ist. m_nOutputs ist in diesem fall 1. (kann aber auch mehr sein...)
    Eigentlich war der ouput-Pointer auch vernünftig mit new angelegt, fragt mich nicht, warum da so ein Quark drinsteht. Beim Anlegen mit new wird doch jedes Element mit 0 initialisiert, oder?
    Der Haltepunkt ist definitiv nach der Zeile.

    Jemand eine Idee?
    Vielen Dank!
    Sören



  • soerenP schrieb:

    Beim Anlegen mit new wird doch jedes Element mit 0 initialisiert, oder?

    Nein. Wuerde viel zu viel arbeit machen, den Speicher erst zu initialisieren, wenn du mit PODs arbeitest. Der Speicher wird einfach nur fuer dich reserviert, es steht aber der gleiche Mist drin wie vorher auch.
    Warum da was anderes drinsteht nach dem memcpy weiss ich allerdings nicht. Poste doch einfach mal deinen Code (nicht nur die eine Zeile), und zeig an, wo du den haltepunkt hingesetzt hast.



  • Oha!
    Hätte wahrscheinlich memcpy(output,m...,m_nOutput*sizeof(float)) machen sollen...
    Wie peinlich
    Sören



  • von welchem Typ ist denn m_nOutputs? memcpy erwartet als dritten Parameter nicht die Anzahl der zu kopierenden Elemente sondern die Anzahl der zu kopierenden Bytes...
    Richtig wäre also:

    memcpy(outputs, m_lastLayerOutput, m_nOutputs * sizeof(typ_von_m_lastPlayerOutput);
    

    Grüße,

    Martin


Anmelden zum Antworten