赋值是垃圾或未定义

Rom*_* M. 5 memory-management objective-c undefined garbage ios

我已经发布了我的错误代码的屏幕截图。 在此处输入图片说明

heights 输出

在此处输入图片说明

请有人可以帮助我吗?

Seb*_*ian 2

分析仪是正确的。_numberOfColumns如果为 0,您的代码将访问垃圾内存,从而为 分配 0 字节heights,从而产生heights[0]垃圾。分析器不知道_numberOfColumns可以有什么值,但您可以使用 来告诉它assert(_numberOfColumns>0)

以这个C程序为例:

int main(int argc, const char * argv[])
{
    int n = argc-1;
    int *a = malloc(n*sizeof(int));
    for (int i=0; i<n; i++) {
        a[i] = i;
    }
    int foo = a[0];
    free(a);
    return foo;
}
Run Code Online (Sandbox Code Playgroud)

的大小a由参数的数量决定。如果你没有争论的话n == 0。如果您确定您的程序(或只是程序的那一部分)将始终将大于 0 的值分配给a,则可以使用断言。添加assert(n>0)将准确地告诉分析器这一点。