Greedy memory handling

Dmitry Olshansky dmitry.olsh at gmail.com
Wed Sep 11 06:45:27 PDT 2013


11-Sep-2013 17:33, Joseph Rushton Wakeling пишет:
> On 11/09/13 15:13, monarch_dodra wrote:
>> That's somewhat better, as it would allow the GC to collect my buffer,
>> if it
>> wants to, but I wouldn't actually know about it afterwards which
>> leaves me screwed.
>
> Just to clarify, is this buffer meant only for internal use in your
> function or is it meant to be externally accessed as well?  I'd kind of
> assumed the former.
>
> Either way, isn't it sufficient to have some kind of
>
>      if (buf is null)
>      {
>          // allocate the buffer
>      }
>
> check in place?  The basic model seems right -- at the moment when you
> need the buffer, you check if it's allocated (and if not, allocate it as
> needed); you indicate to the GC that it shouldn't collect the memory;
> you use the buffer; and the moment it's no longer needed, you indicate
> to the GC that it's collectable again.
>
> It means having to be very careful to check the buffer's allocation
> status whenever you want to use it, but I think that's an unavoidable
> consequence of wanting a static variable that can be freed if needed.
>

Problem is - said GC-freed memory could be then reused in some way. I 
can't imagine how you'd test that the block that is allocated is *still 
your old* block.

-- 
Dmitry Olshansky


More information about the Digitalmars-d-learn mailing list