olen tehnyt c ohjelman joka suorittaa tiettyä toimintoa (odottaa vistiä ja lähettää sitä..)
ja pidän kyseistä ohjelmaa command prompt muodossa auki jatkuvasti, päivän tai parin päästä kone menee kuitenkin jumiin ja ilmoittaa jotain muistin täyttymisestä! missä mahdollisesti olisi vika, miksi ohjelma muka kuormittaa muistia niin ettei se vapauta sitä enää vai onko tässä nyt joku juju mitä mä en ole hoksannut?
ja pidän kyseistä ohjelmaa command prompt muodossa auki jatkuvasti, päivän tai parin päästä kone menee kuitenkin jumiin ja ilmoittaa jotain muistin täyttymisestä! missä mahdollisesti olisi vika, miksi ohjelma muka kuormittaa muistia niin ettei se vapauta sitä enää vai onko tässä nyt joku juju mitä mä en ole hoksannut?
Vastaukset 7
Vanhimmat
Millä kutsuilla lähetät viestin, ja onko kyseessä socketti, Windowsin API:n vai.
Ilmeisesti sinulla on pari ohjelmaa jotka lähetävät viestejä keskenään ? kumman pitää vapautaa muisti (oletan että olet varannut viestille tilaa)
Ehkä näin ?
Ota viesti vastaan
Varaa muistia ja kopioi viesti sinne, ja lähetä se.
Vapauta vanha viesti.
ongelman ei pitäisi olla siinä koska käytän ihan ammattitason viestinvälitys ohjelmistoa.. eli se kyllä hoitaa sen puolen oikein, voiko olla mahdollista että tämä juokseva sovellusikkuna varaa muistia jotenkin täyteen, vai jääkö ainoaksi mahdollisuudeksi ohjelmallinen "virhe" missä joku muistipaikka jää vapauttamatta!?
Menee mielenkiintoiseksi.
"voiko olla mahdollista että tämä juokseva sovellusikkuna varaa muistia jotenkin täyteen, "
Eli siis ohjelmasi tulostelee "lokia" dos ikkunaan, tuossa voi olla hyvinkin syy, kuulostaa käyttöjärjästelmän vialta.
aivan, mutta nt:ssä voi määritellä dos-ikkunan bufferin koon ja se on nyt 50:tä eli sen jälkeen alkaa kirjoittaan päälle! eli tuntus että vika ei voi tuossakaan olla... mä ne kyllä keksi enää mitää tähän... ei voi muutaku ihmetellä!!
hämäräksi menee. Kääntäjä ei taida olla Borlandin valmistama ? siinä voisi pistää codeguard ominaisuuden päälle... muussa tapauksessa koodia tutkimaan....
joo ei ole borland.. vaan MS Visual!
Eipä kyl auta tota koodiakaan tutkia kun siisn ei järkiselitystä näytä olevan..
Auttaiskohan jos laittais ohjelman pyörimään windows servicenä..!?
kyllä sitä voi olla vikaa ihan kaupallisissakin ohjelmissa.. Avaa windowsin taskmanager taustalle, niin voit seurata muistin täyttymistä ja mahdollisesti paikallistaa johtuuko se juuri ko. ohjelmasta.
Vika voi olla esim. joku sellainen, että ohjelma luo viestioliota jossa varataan viestille tilaa, joka kyllä vapautetaan, mutta itse olio jää roikkumaan. Tälläinen on ihan yleistä ja muisti täyttyy niin hiljaa, että sitä ei pienissä testicaseissa huomata. Jos sulla on koodi, niin eiku debuggeri vaan päälle ja ohjelma pyörimään ja välillä tsekkaat mitä pointtereille tapahtuu, jne..