Visual C++: muistinvaraus/vapautuskonflikti

Guruille kysyttävää: nykyisessä projektissani on työn alla sovellus joka koostuu DLL:stä ja käyttöliittymän toteuttavasta EXE:stä (MFC). Suoritteassani virheiden jäljitystä BoundsCheckerillä olen törmännyt tilanteeseen jossa ohjelma ilmoittaa lukuisia allocation conflicteja tyyliin "Allocation Conflict: Attempting to call global_operator_delete on pointer 0x02B0C128, that was allocated by _malloc_dbg."

Tutkimusten ja googlaamisen perusteella vaikuttaisi siltä että tuossa voisi olla kyseessä muistin varaus/vapautusristiriita DLL:n ja EXE:n välillä (toinen varaa, toinen vapauttaa) tai muuten vain yhteisymmärryksen puute. Mahtaneeko asia olla näin ja jos on niin mitä tuossa voisi tehdä ?
1319
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

Mieleen tuli ainakin, että ovatkohan kaikki tuossa kokonaisuudessa samanlaisia versioita. Vai onko käytetty sekaisin debug/release - versioita DLL:ästä ja ohjelmasta.

Allocated by _malloc_dbg ainakin viittaa debug-versioon. Ja katselemalla Visual Studion mukana tulevia standardi kirjaston sorsia, vaikuttaa siltä, että jos allokaatioita tekee debug versiolla ja yrittää vapauttaa release versiolla voi ongelmia olla luvassa.

Mutta jos tuntuu, että tämän palstan gurupopulaation on turhan pieni ja heikkolaatuinen ;)
hyvä paikka esittää kysymyksiä on esim. Microsoftin omat palstat.

http://forums.microsoft.com/MSDN/default.aspx?SiteID=1

Tuolla tuo Visual C - general voisi olla hyvä palsta.

Äänestä

Kommentoi aloitusta


The Real J. kirjoitti:

Guruille kysyttävää: nykyisessä projektissani on työn alla sovellus joka koostuu DLL:stä ja käyttöliittymän toteuttavasta EXE:stä (MFC). Suoritteassani virheiden jäljitystä BoundsCheckerillä olen törmännyt tilanteeseen jossa ohjelma ilmoittaa lukuisia allocation conflicteja tyyliin "Allocation Conflict: Attempting to call global_operator_delete on pointer 0x02B0C128, that was allocated by _malloc_dbg."

Tutkimusten ja googlaamisen perusteella vaikuttaisi siltä että tuossa voisi olla kyseessä muistin varaus/vapautusristiriita DLL:n ja EXE:n välillä (toinen varaa, toinen vapauttaa) tai muuten vain yhteisymmärryksen puute. Mahtaneeko asia olla näin ja jos on niin mitä tuossa voisi tehdä ?

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