boost_python扩展内存泄露

幻海轩辕 2013-08-14 03:41:11
下面是在下写python的扩展代码,但是出现了泄露,希望高手指点一二


const char * decodeYUV420RGB(char * buf, int width, int height)
{
int R,G,B,Y,U,V;
int x,y;
unsigned char *rgb24;
rgb24 = (unsigned char *)malloc(sizeof(char)*width*height*3);
unsigned char* tempbuf = (unsigned char*)buf;
unsigned char *yuv420[3] = {tempbuf,tempbuf+width*height,tempbuf+width*height*5/4};
int nWidth = width>>1; //色度信号宽度
for (y=0;y<height;y++)
{
for (x=0;x<width;x++)
{
Y = *(yuv420[0] + y*width + x);
U = *(yuv420[1] + ((y>>1)*nWidth) + (x>>1));
V = *(yuv420[2] + ((y>>1)*nWidth) + (x>>1));
R = Y + 1.402*(V-128);
G = Y - 0.34414*(U-128) - 0.71414*(V-128);
B = Y + 1.772*(U-128);

//防止越界
if (R>=255)R=254;
if (R<=0)R=1;
if (G>=255)G=254;
if (G<=0)G=1;
if (B>=255)B=254;
if (B<=0)B=1;

*(rgb24 + ((y)*width + x)*3) = R;
*(rgb24 + ((y)*width + x)*3 + 1) = G;
*(rgb24 + ((y)*width + x)*3 + 2) = B;
// *(rgb24 + (y*width + x)*3) = B;
// *(rgb24 + (y*width + x)*3 + 1) = G;
// *(rgb24 + (y*width + x)*3 + 2) = R;
}
}
return (char*)rgb24;
}
BOOST_PYTHON_MODULE(yuvtorgb)
{
def("decodeYUV420", decodeYUV420RGB);
}
...全文
119 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧