My program using COM and some DLLs and this program invokes access violation exception when I close the application. I've grabbing information below


- dli {cb=36 pidd=0x5caf5a1c ppfn=0x5cb175e4 ...} DelayLoadInfo
cb 36 unsigned long
+ pidd 0x5caf5a1c __DELAY_IMPORT_DESCRIPTOR_ole32_dll {grAttrs=1 rvaDLLName=429088 rvaHmod=5561600 ...} const ImgDelayDescr *
+ ppfn 0x5cb175e4 __imp__CoUninitialize@0 int (void)* *
+ szDll 0x5c638c20 "ole32.dll" const char *
+ dlp {fImportByName=1 szProcName=0x5caf627a "CoUninitialize" dwOrdinal=1554997882 } DelayLoadProc
+ hmodCur 0x74df0000 {unused=9460301 } HINSTANCE__ *
pfnCur 0x00000000 int (void)*
dwLastError 0 unsigned long
- dli.dlp {fImportByName=1 szProcName=0x5caf627a "CoUninitialize" dwOrdinal=1554997882 } DelayLoadProc
fImportByName 1 int
- szProcName 0x5caf627a "CoUninitialize" const char *
67 'C' const char
dwOrdinal 1554997882 unsigned long
- dli.dlp.szProcName 0x5caf627a "CoUninitialize" const char *
67 'C' const char

it seems CoUninitialize method involves some bad memory manipulations.
This problem does not occurs on the VS2008.
Why does this occurs ?