Tengo un montón de corrupción en mi programa administrado de subprocesos múltiples. Al hacer algunas pruebas, descubrí que la corrupción ocurre solo cuando los hilos de fondo están activos en el programa (son intercambiables). Los hilos usan algunos componentes de terceros..NET 4: ¿Puede el código administrado solo causar una corrupción de montón?
Después de examinar el código de los hilos y componentes 3 ª parte (con .NET Reflector) me encontré con que todos ellos son administrados, es decir, sin "inseguros" o "DllImportAttribute" o "P/Invoke". Parece que el código puramente administrado causa una corrupción de montón, ¿es esto posible?
ACTUALIZACIÓN
Aparte de utilizar la clase Marshal, es posible dañar la pila con hilos no estando sincronizado correctamente? Un ejemplo sería muy apreciado.
El hecho de que sean todo administrado, no significa que todo sea seguro para subprocesos. ¿Se está asegurando de que el código se ejecute de manera segura para hilos, utilizando bloqueos, etc. cuando sea necesario? –
También hay métodos de clase Marshal que pueden hacer esto. –
@ChrisDunaway, ¿está diciendo que el bloqueo inadecuado o la ejecución de subprocesos de manera no segura para subprocesos puede dañar el montón incluso sin utilizar la clase Marshal? Tenía una respuesta que esto no es posible ([aquí] (http://stackoverflow.com/questions/7471288/what-tools-are-available-to-detect-heap-corruption-in-net-c-program/ 7471468 # 7471468)). –