iphone - BAD_ACCESS when trying to free data when UIView to UIImage -



iphone - BAD_ACCESS when trying to free data when UIView to UIImage -

i intended take snapshot of uiview drawed opengl es uiimage, here code used:

if(context){ [eaglcontext setcurrentcontext:context]; glbindframebuffer(gl_framebuffer, defaultframebuffer); nsinteger datalength = framebufferwidth * framebufferheight * 4; glubyte* info = (glubyte*)malloc(datalength) ; // malloc(mydatalength); glreadpixels(0, 0, framebufferwidth, framebufferheight, gl_rgba, gl_unsigned_byte, data); // create info provider data. cgdataproviderref provider = cgdataprovidercreatewithdata(null, data, datalength, null); // prep ingredients int bitspercomponent = 8; int bitsperpixel = 32; int bytesperrow = 4 * framebufferwidth; cgcolorspaceref colorspaceref = cgcolorspacecreatedevicergb(); cgbitmapinfo bitmapinfo = kcgbitmapbyteorderdefault; cgcolorrenderingintent renderingintent = kcgrenderingintentdefault; // create cgimage cgimageref result = cgimagecreate(framebufferwidth, framebufferheight, bitspercomponent, bitsperpixel, bytesperrow, colorspaceref, bitmapinfo, provider, null, no, renderingintent); // create uiimage uiimage *image = [uiimage imagewithcgimage:result]; cgimagerelease(result); cgcolorspacerelease(colorspaceref); cgdataproviderrelease(provider); //free(data); homecoming image; }

i intended utilize free(data); before return, raises bad_access runtime error.

so questions is, how free properly? or should free them after image releases?

you should utilize cgdataprovidercreatewithdata's cgdataproviderreleasedatacallback described here.

simply add together freedata function callback:

void freedata(void *info, const void *data, size_t size) { free((void*)data); }

and pass cgdataprovidercreatewithdata:

cgdataproviderref provider = cgdataprovidercreatewithdata(null, data, datalength, freedata);

iphone objective-c opengl-es uiimage cgimage

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -