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


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.


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


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


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()
        End Sub
  7. Compile and then run the application. Click the button.


For more information about interop marshaling, visit the following Microsoft Web site:
Interop Marshaling


Article ID: 327107 - Last Review: February 23, 2007 - Revision: 2.5
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
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