December 28, 2013
I'm curious,
does the GC allocate primitive type arrays like uint[] as noscan memory block, or are those data blocks considered for scanning? And if so why?
I have a small program that works with lots of uint[] arrays and goes out of memory. The data set it works on is not even close to the maximum memory amount available. So I think these uint[] arrays keep each other alive.

Kind Regards
Benjamin Thaut
December 28, 2013
"Benjamin Thaut" <code@benjamin-thaut.de> wrote in message news:l9mdb4$1lmf$1@digitalmars.com...
> I'm curious,
> does the GC allocate primitive type arrays like uint[] as noscan memory
> block, or are those data blocks considered for scanning? And if so why?
> I have a small program that works with lots of uint[] arrays and goes out
> of memory. The data set it works on is not even close to the maximum
> memory amount available. So I think these uint[] arrays keep each other
> alive.
>
> Kind Regards
> Benjamin Thaut

import core.memory;
import std.stdio;

void main()
{
    auto x = new uint[](200);
    writeln((GC.getAttr(x.ptr) & GC.BlkAttr.NO_SCAN) != 0);
}