Windwos Form Anwendung mit "new und delete" Speicherverletzung..



  • Hallo,

    ich bin völlig ratlos. Ich habe eine Windows Forms Anwendung versuche verzweifelt in mit new und delete speicher zu verwalten.

    Dabei ist das verrückte, dass es sehr unregelmäßige fehler sind...

    UCHAR* i_senddata2=(UCHAR*) "0100";
    					int i_sendlen2 = 4;
    					int iDataFormat2 = 1;
    					UCHAR* i_rspdata2=new UCHAR(50); //hier funktioniert es
    					int* i_rsplen2=new int(50);//hier funktioniert es
    					int iBack2=-1;
    					iBack2 = FEISC_0xB0_ISOCmd(iReaderhandle, 255, i_senddata2,i_sendlen2,i_rspdata2, i_rsplen2,iDataFormat2 );
    
    					UCHAR* s_senddata=makeselectcmd(i_rspdata2);
    					int s_sendlen = 22;
    					int sDataFormat = 1;
    					UCHAR* s_rspdata=new UCHAR(50);//hier habe ich die Speicherverletzung
    					int* s_rsplen=new int(50);//hier habe ich die Speicherverletzung
    					int sBack=-1;
    					sBack = FEISC_0xB0_ISOCmd(iReaderhandle,255,s_senddata,s_sendlen,s_rspdata,s_rsplen,sDataFormat);
    

    Ich weiss echt nicht mehr weiter..
    PS:

    delete i_rspdata2;
    

    kann er auch nicht 😞

    PPS: UCHAR ist unsigned char

    mfg

    Phil



  • Mal so eine Frage nebenbei:
    Ist es wirklich nötig die Variablen auf dem Heap (mit new) zu erzeugen?
    Würde nicht auch eine Stack Allokation ausreichen?

    Simon



  • Mir sagt Ausdruck nichts...
    Meinst du einfach nur eine Definition der Variablen?

    Wenn ich alle "new´s" weg lasse geht es auch nicht...



  • habe gerade herausgefunden:

    wenn ich alle Variablen ganz am Anfang des Codes Definiere(auch mit new..)
    dann bleibt der Error weg...

    aber was hat das denn für eine Logik???



  • keiner eine idee?



  • Nur so ne Klärung für ziwschendurch:

    Du weisst schon, dass folgender Code nur 1 UCHAR anlegt (und ihn mit dem Wert 50 initialisiert) und kein Array.

    UCHAR* i_rspdata2=new UCHAR(50);
    

    Ich vermute ganz einfach, dass Du Speicherbereich schreibst oder liest, der dir nicht gehört.

    Simon



  • Man müsste kurz sagen, dass man lieber Eckige Klammern verwenden sollte...



  • und delete[]...


Anmelden zum Antworten