Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Variant valiables problem | Excel Discussion (Misc queries) | |||
To get a sum for variant currency values | Excel Discussion (Misc queries) | |||
How do I assign range to variant and use | Excel Discussion (Misc queries) | |||
DLLs and VBA: Who free's a variant? | Excel Programming | |||
How do DLLs Work? | Excel Programming |