【问题标题】:2 dimensional C array as Objective C parameter, malloc incompatible with sizeof operand二维 C 数组作为 Objective C 参数,malloc 与 sizeof 操作数不兼容
【发布时间】:2014-05-09 16:26:58
【问题描述】:

我需要创建一个指向二维 C 数组的指针,该数组稍后将作为参数传递给函数。这就是我正在尝试的:

int64_t (*results)[numSamples] = malloc(sizeof(int64_t[numSamples])*amountPossible);

我希望的结果是一个指向二维数组的指针,它实际上类似于int64_t[amountPossible][numSamples],但在 Xcode 中使用分析我得到警告

'malloc' 的结果被转换为类型的指针 'int64_t[numSamples]',与 sizeof 操作数类型不兼容 'int64_t[numSamples]'

numSamples 将始终是相同的值,但 amountPossible 是可变的。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: objective-c c


    【解决方案1】:

    这似乎是分析器中的一个错误。我发现的唯一不会使分析器出错的排列是分解语句:

    size_t bytes = sizeof(int64_t[numSamples]) * amountPossible;
    int64_t (*results)[numSamples] = malloc(bytes);
    

    这当然不应该是必需的!

    将其作为错误报告给 Apple。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多