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ä ?
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ä ?
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.