AllocPyString(int length) { uint size = (uint)(Marshal.SizeOf(typeof(PyStringObject)) + length); IntPtr data = this.allocator.Alloc(size); PyStringObject s = new PyStringObject(); s.ob_refcnt = 1; s.ob_type = this.PyString_Type; s.ob_size = length; s.ob_shash = -1; s.ob_sstate = 0; Marshal.StructureToPtr(s, data, false); IntPtr terminator = CPyMarshal.Offset(data, size - 1); CPyMarshal.WriteByte(terminator, 0); return(data); }
private IntPtr AllocPyString(int length) { uint size = (uint)(Marshal.SizeOf(typeof(PyStringObject)) + length); IntPtr data = this.allocator.Alloc(size); PyStringObject s = new PyStringObject(); s.ob_refcnt = 1; s.ob_type = this.PyString_Type; s.ob_size = length; s.ob_shash = -1; s.ob_sstate = 0; Marshal.StructureToPtr(s, data, false); IntPtr terminator = CPyMarshal.Offset(data, size - 1); CPyMarshal.WriteByte(terminator, 0); return data; }