On Apr 20, 9:09 pm, "Hank @ITGroup" <[EMAIL PROTECTED]> wrote:
> Could you please give us some clear clues to obviously call python to > free memory. We want to control its gc operation handily as we were > using J**A. If you want to get rid of a Python object, the only way to do that is to get rid of every reference to the object. This is no different from Java. If you just want to deallocate and allocate memory to store text, Python lets you do that the same way as C: from __future__ import with_statement import os from ctypes import c_char, c_char_p, c_long, cdll from threading import Lock _libc = cdll.msvcr71 if os.name == 'nt' else cdll.libc _lock = Lock() def string_heapalloc(n): ''' allocate a mutable string using malloc ''' with _lock: malloc = _libc.malloc malloc.argtypes = [c_long] malloc.restype = c_char * n memset = _libc.memset memset.restype = None memset.argtypes = [c_char * n, c_char, c_long] tmp = malloc(n) memset(tmp,'0',n) return tmp def string_heapfree(s): ''' free an allocated string ''' with _lock: free = _libc.free free.restype = None free.argtypes = [c_char_p] ptr_first_char = c_char_p( s[0] ) free(ptr_first_char) if __name__ == '__main__': s = string_heapalloc(1000) s[:26] = 'abcdefghijklmnopqrstuvwxyz' print s[:] string_heapfree(s) -- http://mail.python.org/mailman/listinfo/python-list