Microsoft KB Archive/327107

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

Article ID: 327107

Article Last Modified on 2/23/2007

-

APPLIES TO


 * Microsoft .NET Framework 1.1
 * Microsoft .NET Framework 1.0

-



This article was previously published under Q327107



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).



Steps to Reproduce the Behavior
  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  Make Project1.dll. Open Microsoft Visual Studio. NET and then create a Windows Application project in Visual Basic .NET. Add a reference to Project1.dll. Add a Button control to Form1.  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 </li> Compile and then run the application. Click the button.</li></ol>

<div class="references_section">