[Python-3000] PEP Draft: Enhancing the buffer protcol
Daniel Stutzbach
agthorr at barsoom.org
Wed Feb 28 05:52:54 CET 2007
On 2/27/07, Travis E. Oliphant <oliphant.travis at ieee.org> wrote:
> Maybe I'm not understanding you correctly. Perhaps what you are saying
> is that we should have all memory allocation go through a light-weight
> memory-object. Then, you would get this object + an offset when you
> wanted a pointer into memory.
>
> This way, the memory would never be deallocated until nothing was
> referencing it. I think this approach would work. However, you could
> still have the case, where an object reallocated memory while another
> object which thought it had a view of that object ended up with a
> "out-dated" view. You just wouldn't segfault in that case.
>
> You could check the reference count on the memory object, before
> reallocating, I suppose.
You have understood me correctly.
(though I see that Greg Ewing has raised a good objection so its a moot point)
> But I've heard that the reference counts on
> Python objects can be larger than 1 in some cases (even though there
> isn't really anything "viewing" the memory).
Is that true?
I'm writing an extension module (for my own use and to scratch an
itch) that relies on the following notion:
If a C module never exposes an object to the user, then the
object's reference counter is only incremented/decremented by the
module.
Does the garbage collector sometimes temporarily increment reference
counters in the course of its operation? I looked through the code,
but didn't see anything to that effect (except with regard to weak
reference objects). I can't see how anything other than the garbage
collector would even find such an object.
--
Daniel Stutzbach, Ph.D. President, Stutzbach Enterprises LLC
More information about the Python-3000
mailing list