FIX: OutOfMemoryException Occurs When You Access Non-Fixed Size Safe Arrays in a User-Defined Type

Article translations Article translations
Article ID: 327107 - View products that this article applies to.
This article was previously published under Q327107
Expand all | Collapse all

On This Page

SYMPTOMS

The following error message occurs when you invoke a method on a Component Object Model (COM) object that returns a user-defined type that contains a Safe array (non-fixed size):
An unhandled exception of type 'System.OutOfMemoryException' occurred in ApplicationName.exe

Additional information: Not enough storage is available to complete this operation.

CAUSE

This behavior occurs because the .NET Framework cannot marshal a structure field with a Safe array (non-fixed size) type.

STATUS

This bug was corrected in .NET Framework (2003|1.1).

MORE INFORMATION

Steps to Reproduce the Behavior

  1. Create an ActiveX DLL project in Microsoft Visual Basic 6.0. Paste the following code in the default class module, Class1 (Class1.cls):
    Public Type Test
        l As Long
        x() As Integer
    End Type
    
    Public Function Func() As Test
        Dim t As Test
        t.l = 100
        Func = t
    End Function
    					
  2. Make Project1.dll.
  3. Open Microsoft Visual Studio. NET and then create a Windows Application project in Visual Basic .NET.
  4. Add a reference to Project1.dll.
  5. Add a Button control to Form1.
  6. Copy and then paste the following code after the Windows Form Designer generated code region:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim c As New Project1.Class1()
            c.Func()
        End Sub
    					
  7. Compile and then run the application. Click the button.

REFERENCES

For more information about interop marshaling, visit the following Microsoft Web site:
Interop Marshaling
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconinteropmarshaling.asp

Properties

Article ID: 327107 - Last Review: February 23, 2007 - Revision: 2.5
APPLIES TO
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Keywords: 
kbfix kbbug kbcominterop kbpending KB327107

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com