我的代码是 Objective-C 和 C 的混合体。我简化了下面的代码,但它仍然产生相同的错误。在 Objective-C 文件中:
CGFloat r,g,b = 0.5;
CGFloat x,y,z = 0.0;
foo(r, g, b , &x, &y, &z);
以及 C 部分(导入的 C 文件):
void foo(CGFloat R, CGFloat G, CGFloat B, CGFloat *X, CGFloat *Y, CGFloat *Z) {
*X = 5;
*Y = 5;
*Z = 5;
}
当分配给其中一个指针中的内容时会发生错误 - 它显示 EXS_BAD_ACCESS。我错过了什么(或者没有正确理解?)。我假设在同一个项目中拥有单独的 .c 和 .m 文件是可以的......无论如何它似乎构建得很好。
最佳答案
在我的 c 源文件的 header 中,有一些流氓行将 CGFloat 声明为 double。删除并用 float 替换我的 C 文件中的所有 CGFloat。
关于ios - 使用指针的简单函数会导致内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676202/