Different behaviour of new and malloc

Namespace rswhite4 at googlemail.com
Sat Apr 13 14:22:14 PDT 2013


I have a problem and maybe one you can explain, why this failure 
happen.
Initial situation:
I have a opengl texture and I want to copy the pixel. I store the 
original pixel in an ubyte pointer and allocate new pixel memory 
with:
ubyte[] newPixel = new ubyte[this.width * this.height * 
this.depth];
and copy the pixel with
newPixel[] = *orgPixel;
or
memcpy(&newPixel[0], orgPixel, this.width * this.height * 
this.deph);

Both compiles without errors or warnings.
But if I want to store the newPixel in a new Texture, I see only 
black, no matter what method I use.
But if I change my allocation to
ubyte* newPixel = cast(ubyte*) GC.malloc(this.width * this.height 
* this.deph * ubyte.sizeof);
and copy then with
memcpy(&newPixel[0], orgPixel, this.width * this.height * 
this.deph);

it works fine and I see the copied texture.

My question is: why? What is the difference between both ways of 
allocations?


More information about the Digitalmars-d-learn mailing list