Windows QueueUserWorkItem C ++ Release mode problem

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har c ++ kode, der bruger QueueUserWorkItem til at kalde en funktion, der fra en wrapper klasse, der kalder vinke accepterer. Dette virker fint i fejlfinding, det virker også, hvis jeg kører frigivelsen eksekverbar fra at bruge Start Profile-indstillingen fra Dependency Walker. Men hvis jeg kører løsladelsen eksekverbar normalt, går det ned på opkaldet til QueueUserWorkItem. Så snart det kalder den funktion, udløber programmet kun. Udførelsen når aldrig den funktion, jeg passerer ind i QueUserWorkItem, men funktionspegeren er gyldig.


Er der nogen der kender til noget, der kan forårsage, at QueueUserWorkItem krasjer i frigivelsestilstand, men ikke fejler?

Bedste reference



  Kender nogen af ​​noget, der kan forårsage <random function> at gå ned i frigivelsestilstand, men ikke fejlfinding?



Ja, bufferoverløb. Fejlfinding bygger har vagter placeret omkring dem, som du kan overskrive, men i frigivelsesmodus overskriver du sandsynligvis vigtig hukommelse.