Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

MDA de overlappedFreeError

El asistente para la depuración administrada overlappedFreeError (MDA) se activa cuando se llama al método Overlapped.Free(NativeOverlapped*) antes de que finalice la operación superpuesta.

Infracciones de acceso o daños en la pila de recolección de elementos no utilizados.

Se ha liberado una estructura superpuesta antes de que finalizara la operación. La función que está utilizando el puntero superpuesto podría escribir después en la estructura, una vez que se hubiese liberado. Esto puede producir daños en la pila porque otro objeto podría ocupar ahora esa región.

Este asistente para la depuración administrada no podría representar un error si la operación superpuesta no se se hubiese iniciado correctamente.

Asegúrese de que la operación de E/S que utiliza la estructura superpuesta haya finalizado antes de llamar al método Free(NativeOverlapped*).

Este MDA no tiene efecto en el CLR.

A continuación se muestra un ejemplo de los resultados de este MDA.

An overlapped pointer (0x00ea3430) that was not allocated on the GC heap was passed via Pinvoke to the win32 function 'WriteFile' in module 'KERNEL32.DLL'. If the AppDomain is shut down, this can cause heap corruption when the async I/O completes. The best solution is to pass a NativeOverlappedStructure retrieved from a call to System.Threading.Overlapped.Pack(). If the AppDomain exits, the CLR will keep this structure alive and pinned until the I/O completes.

<mdaConfig>
  <assistants>
    <overlappedFreeError/>
  </assistants>
</mdaConfig>

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft