ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   DLLs and VBA: Who free's a variant? (https://www.excelbanter.com/excel-programming/273649-re-dlls-vba-who-frees-variant.html)

Keith Willshaw

DLLs and VBA: Who free's a variant?
 

"James Scott" wrote in message
om...
Hi,

I have a VC++ DLL function which is returning a variant to VBA. The
variant contains a SAFEARRAY (by ref) allocated by the function which
may in turn contain other variants etc. All this being allocated with
CoTaskMemAlloc..

It works fine, except it looks to me like VBA doesn't deallocate the
structures it's getting back when it's finished with them. I've seen
some rumours about IDL's and [in] [out] parameters being the way to do
this, anyone got any ideas?

James


Passing data BYREF means all you are doing is passing a pointer
to the place in memory the data is stored.

If the dll is an inprocess server , that is its only called as a result
of your programme then it will be released when you set the
ActiveX Object to nothing. If its an out of process server i.e.
another programme you are attaching to then its for that programme
to do the clean out.

In the C# servers I am currently developing I definitely use
IN and OUT rather than BYREF but there is a an overhead
here. When you pass data this way you are creating a copy and
then passing it which for large data sets mau be an issue.

Keith




All times are GMT +1. The time now is 01:23 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com