• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 304
  • Last Modified:

how to free allocated memory in C++ dll function which is called from C# module

Dear All

Do we have any methodology to free allocated memory in C++ dll function which is called from C# module.
Its quite urgent.Can u please help.

Thanks
0
BYTECHINDIA
Asked:
BYTECHINDIA
  • 2
  • 2
  • 2
  • +2
2 Solutions
 
käµfm³d 👽Commented:
Who allocates the memory? Is it the C++ or the C#?
0
 
jkrCommented:
Furthermore, if it is done in the C++ DLL, that will also depend how the allocation was done,, i.e. via 'new', 'new[]', 'malloc()' or some OS-specific API. In other words: That can be quite a simple task if you have the source code and close to impossible if you haven't.
0
 
BYTECHINDIAAuthor Commented:
Thanks Sir for the reply,

Memory is getting allocated in C++ DLL only.
Actually This DLL cod eis very big and its an ATL COM DLL.Hence so many places BSTR,_bstr_t,and other form of strings are getting used.Moreover its data is very crucially calculated and tested too.Hence we dont want to change the DLL Code.Only when we hit the DLL number of times,then it crashes unexpectedly.

If we can do something from managed code level from C# code,that will be beneficial.

Thanks again.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
jkrCommented:
No, there is hardly anything you could do from managed code. What exactly is the exception that causes the crash?
0
 
Michael FowlerSolutions ConsultantCommented:
You could look at disposing the COM object after use with Marshal.ReleaseComObject

This method is used to explicitly control the lifetime of a COM object used from managed code. You should use this method to free the underlying COM object that holds references to resources in a timely manner or when objects must be freed in a specific order.
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx
0
 
BYTECHINDIAAuthor Commented:
@jkr, the popup just triggered at server that w3wp.exe stopped working.do you want to debug.when we say ok then again service starts working atleast for some time.Earlier also it happened so many times.

@Michaels,actually I am already using it but I am not sure whether it is fulfilling the requirement or not.
0
 
Michael FowlerSolutions ConsultantCommented:
Another suggestion is that it well known that when using the Office Interop that you need to release all objects created under the initial com object. When using the office interop it is highly recommended to never use an expression with 2 dots but rather decalre objects for these objects eg

http://msdn.microsoft.com/en-us/library/bb623945(v=office.12).aspx

Something similar could be happening here
0
 
ambienceCommented:
Often there is no easy way to catch and fix such problems. There are a few things worth a try:

Setup Drwatson or enable coredump writing in Windows. This should give you something to analyze under WinDbg, which will at least tell about the nature of crash, exception codes etc.

As for memory issues, you might have to resort to profiling the application using 3rd party tools, open/free or paid.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 2
  • 2
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now