|
|

楼主 |
发表于 2006-1-5 12:10:00
|
显示全部楼层
Re:DLL中使用GDI+引起Heap错误
UINT num; // number of image encoders
UINT size; // size, in bytes, of the image encoder array
ImageCodecInfo* pImageCodecInfo;
GetImageEncodersSize(&num, &size);
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
GetImageEncoders(num, size, pImageCodecInfo);
看上面的例子,我发现一个很奇怪的事情,微软在获取Encoder信息的时候,不仅返回了数量,就是数组元素的个数,还返回了数组所占的内存大小。
在申请数组的时候不是用
pImageCodecInfo = new ImageCodecInfo[num];
而是用的
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
而且size并不等于num * sizeof(ImageCodecInfo)
微软给的解释是
Create a buffer large enough to hold the array of ImageCodecInfo
不知道微软搞得什么鬼。 |
|