X
Xiaoguo Ge
My component as a DLL is sharing a process with many other dll components.
All these components are built with VC6 and linked to VC6 crt dynamically.
Because of performance reasons, the vendor of some of the dlls I am
referencing requested to build their dlls with VS2008. I agreed, thinking
that those vender dlls are only referenced by me and Ie do not share any CRT
objects with them(I do pass heap buffers to the dlls, but they will make
their own copies and will not free my memory). But after the newly built dlls
are integrated, crt calls(free()) are failing all over the place with access
violation . The failures occur mostly in other components I am not
responsible for and do not have source code of. This seems to be a heap
corruption problem.
I know there are a lot of documents warn against mixing crt versions. But
this is still strange to me. The two CRTs should be totally isolated to each
other. Can anybody give a hint on why this happens?
All these components are built with VC6 and linked to VC6 crt dynamically.
Because of performance reasons, the vendor of some of the dlls I am
referencing requested to build their dlls with VS2008. I agreed, thinking
that those vender dlls are only referenced by me and Ie do not share any CRT
objects with them(I do pass heap buffers to the dlls, but they will make
their own copies and will not free my memory). But after the newly built dlls
are integrated, crt calls(free()) are failing all over the place with access
violation . The failures occur mostly in other components I am not
responsible for and do not have source code of. This seems to be a heap
corruption problem.
I know there are a lot of documents warn against mixing crt versions. But
this is still strange to me. The two CRTs should be totally isolated to each
other. Can anybody give a hint on why this happens?