Pico C Programm out of memory (Alloc)

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • loxinator
    Azubi
    • 06.02.2020
    • 5

    #1

    Pico C Programm out of memory (Alloc)

    Hallo!
    Bin neu hier im Forum und habe folgendes Problem.
    Das Programm empfängt einen Text und soll ihn ausgeben, wenn die ersten Zeichen übereinstimmen.


    #define BUFF_SIZE 256


    char szBufferc[BUFF_SIZE];

    int laenge = 22;
    int abschnitt;
    int cmpa;
    char* ausgabec;
    char* gra = "\x011\x021\x1F1\x1E2\x1F";


    while(1)
    {
    memset(szBufferc,NULL,256);
    szBufferc = getinputtext(0); //input 1 in szBuffer schreiben
    cmpa = strncmp(gra,szBufferc,6);
    if(cmpa == 0)
    {
    ausgabec = strstrskip(szBufferc,gra);
    }
    if(cmpa != 0)
    {
    memset(szBufferc,NULL,256);
    }
    setoutput(1,abschnitt);
    setoutput(2,cmpa);
    setoutputtext(0,ausgabec); //gibt Text auf 1. Ausgang aus
    setoutputtext(1,gra);
    sleep(100);
    }
    }

    Funktioniert problemlos bis die
    Fehlermeldung immer nach ca 22 Minuten kommt: cmpa = strncmp(gra,szBufferc,6); ^Programm:17:29 out of memory (Alloc)
    Ich weiß aber leider nicht welcher Speicher voll läuft und warum.

    Bitte um eure Hilfe.
    Mfg Loxinator



  • simon_hh
    Lox Guru
    • 18.09.2015
    • 2659

    #2
    Edit:
    Loxone gibt den Speicher nicht von sich aus wieder frei. Es gibt auch keinen garbage collector.
    Versuche doch mal vor Deinem "sleep" alle Variablen wieder freizugeben.
    Also

    free (gra);
    free (ausgabec);
    free (szBufferc); // ich glaube den musst Du nicht freigeben, da es kein Pointer ist, aber probiere es mal.
    sleep(100);


    nur mal so als Idee.
    Hier in der Doku gefunden:
    • 128kB are available for heap and stack. Use memory thrifty; do not forget to release memory.
    • All functions which return a pointer must reallocate the memory with free (), unless the pointer was passed as a parameter
    Loxone gibt also Speicher nicht selbständig wieder frei und bei jedem Pointer steht in der Doku am Ende:
    "The memory where the returned pointer points to must be deallocated with function free()"
    Zuletzt geändert von simon_hh; 06.02.2020, 18:40.
    Haus: Bj 1959, gekauft 2011, totale Entkernung, Dachausbau, Erweiterung & Vergrößerung: Start: 2014, Ende: 2050
    Loxone: 1 x Ms Gen.02, 1 x MS Gen.01, 5 x Ext., 4 x Relay Ext., 1 x Dimmer Ext., 2 x 1-wire Ext., 1 x DMX Ext. 1 x TREE Ext. mehr kommt noch
    Licht: DMX LED Beleuchtung (24V), MW HLG Serie und eldoled Dimmer
    Heizung: Brötje WBS 22F, OG Heizkörper und FuBoHeizung über RTL, EG FuBoHeizung

    Kommentar

    Lädt...