automaattinen roskienkeruu

alkaa tympiä tuo jatkuva muistin vapauttelu ja siitä seuraavat ongelmat ja virheet/kaatuilut, miten tuon saa automaattiseksi??? jos se kerran javassa toimii niin miksei c :ssä???
5369
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Jos muistin vapauttaessa (tai käytettäessä) tulee virheitä, virhe on yleensä siinä, että kirjoitetaan/luetaan ohi varatun muistialueen. Virheet tulisi siis etupäässä korjailla pois koodista.
Virheiden prosessointiin voi tietty käyttää try-catch-throw -käskyjä (tai oikeemmin try ja catch blokit ja throw -makro).

Äänestä

LPTSTR SafeStrcpy(LPTSTR string1, LPTSTR string2){
try {
return strcpy(string1, string2);
}
except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER :
EXCEPTION_CONTINUE_SEARCH ) {
return NULL;
}
}

Äänestä

Synä on jäykkä standardi, ei siihen niin vain tehdä muutoksia, eli C ja C ovat mitä ovat nyt ja hamaan maailman taappiin saakka.

Jos kurinalainen muistinkäsittely tuntuu ylivoimaiselta, niin siirry jawa-maailmaan, tai C#:iin, siellä saa elää kuin pellossa.

Äänestä
  • nuhapunppumainen ja helkkarin kankea sovelus sen koosta riippumatta: nythän on hyvinkin pitkälti niin, että nämähän ovat ceellä ja ceeplusplussalla tehdyt sovelukset valovuoden edellä suoritusnopeuksia mitattaessa verrattuna sen ohjelmointipellossa eläjän jawettiin. Ceesharpista mä en osaa sanoa muuta kuin sen, että siinä voi käsittääkseni tehdä saman asia yhdellä rivillä verrattuna ceeplusplussaan ja etenkin ceehen, jossa siihen samaan tekemiseen joutuu kirjottaan rivitolkulla koodia, jos välttämättä haluaa niillä riveillä keksiä polkupyörän uudestaan. Mutta suoritusnopeudet ja soveluskoot ovat sitten keksittynä tietenkin ylivoimaisia, mutta siinä pitää siis muistaa, että sen saavuttamiseen siten ohjelmoimalla voi mennä vuosia isommaltakin porukalta.

    Äänestä


Kommentoi aloitusta


miten? kirjoitti:

alkaa tympiä tuo jatkuva muistin vapauttelu ja siitä seuraavat ongelmat ja virheet/kaatuilut, miten tuon saa automaattiseksi??? jos se kerran javassa toimii niin miksei c :ssä???

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu