pICI = (ImageCodecInfo*)(malloc(size))怎么转换为freebasic语法,另外pICI怎么访问呢
时间: 2023-12-03 21:45:23 浏览: 26
在 FreeBASIC 中,可以使用 `Allocate` 函数来动态分配内存。因此,将 `pICI = (ImageCodecInfo*)(malloc(size))` 转换为 FreeBASIC 语法,可以写成:
```
Dim pICI As ImageCodecInfo Ptr
pICI = Allocate(size As ULong)
```
其中,`ImageCodecInfo Ptr` 表示指向 `ImageCodecInfo` 类型的指针,`Allocate` 函数用于动态分配 `size` 字节大小的内存,并返回一个指向该内存的指针。
要访问 `pICI` 所指向的内存,可以使用 `->` 运算符。例如,如果 `ImageCodecInfo` 中有一个名为 `property` 的成员变量,可以通过以下方式访问:`pICI->property`。
相关问题
pICI = (ImageCodecInfo*)(malloc(size))怎么转换为freebasic语法
在 FreeBASIC 中,使用 `Allocate` 函数来动态分配内存,相当于 `malloc` 函数。因此,您可以将该语句转换为以下内容:
```
Dim As ImageCodecInfo Ptr pICI = Allocate(size)
```
同样,您可以使用 `Deallocate` 函数来释放动态分配的内存,相当于 `free` 函数。将该语句转换为以下内容:
```
Deallocate pICI
```
//获取编码器的CLSID [class id] UINT num=0; //图像编码器的数量 UINT size=0; //图像编码器数组的字节数 CLSID encoderClsid; ImageCodecInfo* pICI=NULL; GetImageEncodersSize(&num,&size);//获得系统编码器的数量和大小 if(size==0) return false;//失败 pICI = (ImageCodecInfo*)(malloc(size)); //编码器 if(pICI==NULL) return false;//失败 GetImageEncoders(num,size,pICI); //获取编码器信息 for(int j=0;j<num;++j) { if(wcscmp(pICI[j].MimeType,L"image/png")==0)//jpeg bmp gif tiff png { encoderClsid = pICI[j].Clsid; } } free(pICI); 转换为freebasic语法
Dim num As UINT '图像编码器的数量
Dim size As UINT '图像编码器数组的字节数
Dim encoderClsid As CLSID '编码器的CLSID
Dim pICI As ImageCodecInfo Ptr '编码器
GetImageEncodersSize(num, size) '获得系统编码器的数量和大小
If size = 0 Then Return False '失败
pICI = ImageCodecInfo Ptr(malloc(size)) '分配编码器空间
If pICI = NULL Then Return False '失败
GetImageEncoders(num, size, pICI) '获取编码器信息
For j As Integer = 0 To num - 1
If StrCompare(pICI(j).MimeType, L"image/png") = 0 Then 'jpeg bmp gif tiff png
encoderClsid = pICI(j).Clsid
End If
Next
Free(pICI) '释放编码器空间