首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的calloc

Swift中的calloc
EN

Stack Overflow用户
提问于 2015-02-26 14:06:29
回答 3查看 2.8K关注 0票数 4

如何将下列ObjectiveC语句转换为SWIFT:

代码语言:javascript
复制
UInt32 *pixels;
pixels = (UInt32 *) calloc(height * width, sizeof(UInt32));

我试着做以下几件事:

代码语言:javascript
复制
var pixels: UInt32
pixels = (UInt32)calloc(height * width, sizeof(UInt32))

我收到了错误消息:

Int不能转换为UInt。

而且(UInt32)的铸造也不起作用。有人能给我一些建议吗?我还在和斯威夫特搏斗。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-26 14:22:18

下面是一种快速分配数组的更简单的方法:

代码语言:javascript
复制
var pixels = [UInt32](count: height * width, repeatedValue: 0)

如果你真的想这么做的话。

但是,如果出于某种原因需要calloc的指针,请使用:

代码语言:javascript
复制
let pixels = calloc(UInt(height * width), UInt(sizeof(UInt32)))

不过,pixels的类型必须是一种UnsafeMutablePointer<T>类型,您将像处理代码的其余部分中的一个快速指针一样来处理它。

票数 5
EN

Stack Overflow用户

发布于 2016-12-19 11:10:27

For Swift-3 : UnsafeMutablePointer被UnsafeMutableRawPointer取代

代码语言:javascript
复制
 var pixels = UnsafeMutableRawPointer( calloc(height * width, MemoryLayout<UInt32>.size) )

参考文献

票数 2
EN

Stack Overflow用户

发布于 2015-02-26 14:26:17

如果您确实是,那么知道您在做什么,并且坚持不安全地使用calloc分配内存

代码语言:javascript
复制
var pixels: UnsafeMutablePointer<UInt32>
pixels = calloc(height * width, sizeof(UInt32))

或者只是

代码语言:javascript
复制
var pixels = calloc(height * width, sizeof(UInt32))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28744536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档