[Ironpython-users] Memory Allocation in Iron Python

Dino Viehland dinov at microsoft.com
Mon Jan 23 23:57:51 CET 2012

One potential issue here could be ASCII vs Unicode strings.  Depending on wherever the copy into this memory occurs it could end up copying the Unicode string into a buffer which is sized for ASCII strings.

From: ironpython-users-bounces+dinov=microsoft.com at python.org [mailto:ironpython-users-bounces+dinov=microsoft.com at python.org] On Behalf Of Markus Schaber
Sent: Sunday, January 22, 2012 11:44 PM
To: Jim Pattee; ironpython-users at python.org
Subject: Re: [Ironpython-users] Memory Allocation in Iron Python

Hi, Jim,

You only gave us half of the source. Which way do you pass the memory address to the native DLL?

One difference is, for example, that .NET relocates objects sometimes, so they need to be pinned.

Best regards

Markus Schaber
We software Automation.

3S-Smart Software Solutions GmbH
Markus Schaber | Developer
Memminger Str. 151 | 87439 Kempten | Germany | Tel. +49-831-54031-0 | Fax +49-831-54031-50

Email: m.schaber at 3s-software.com<mailto:m.schaber at 3s-software.com> | Web: http://www.3s-software.com <http://www.3s-software.com/>
CoDeSys internet forum: http://forum.3s-software.com<http://forum-en.3s-software.com/>
Download CoDeSys sample projects: http://www.3s-software.com/index.shtml?sample_projects

Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915

Von: ironpython-users-bounces+m.schaber=3s-software.com at python.org<mailto:ironpython-users-bounces+m.schaber=3s-software.com at python.org> [mailto:ironpython-users-bounces+m.schaber=3s-software.com at python.org]<mailto:[mailto:ironpython-users-bounces+m.schaber=3s-software.com at python.org]> Im Auftrag von Jim Pattee
Gesendet: Montag, 23. Januar 2012 00:50
An: ironpython-users at python.org<mailto:ironpython-users at python.org>
Betreff: [Ironpython-users] Memory Allocation in Iron Python

I am trying to allocate memory in Iron Python to receive text from a DLL. The allocated memory address is passed to the DLL and the text is copied by the DLL into the memory area. The following code, which works in CPython, is used:
allocated = []
def MemoryAllocation(size):
     arr_type = c_char * size    # create a c_char array
     arr_obj = arr_type()        # create an array object
     allocated.append(arr_obj)   # so the object will not be destroyed
     if len(allocated) > 1:      # free memory for the previous object
          del allocated[0]
     return addressof(arr_obj)   # return a pointer

When this is used for Iron Python it results in:
“Unhandled Exception: System.AccessViolationException: Attempted to read or write
protected memory. This is often an indication that other memory is corrupt.”

The error results when the memory is copied into Python by the DLL. There are no errors displayed when executing the above code.

Why can it not write to the memory? What is the difference in Iron Python and CPython?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20120123/62646ccc/attachment.html>

More information about the Ironpython-users mailing list