我想确保当它不是Obj-C对象时,指针myFunction()返回的值可用。

double * vectorComponents ();   //Just an example

double * vectorComponents ()
{
    double componentSet[] = {1, 2, 3};
    return componentSet;
}


我如何动态分配这些变量,然后如何取消分配它们。如果我什么都不做,那就行不通了。谢谢大家。

NSLog(@":)");

最佳答案

您可以使用C标准库函数malloc()free()

double *vectorComponents()
{
    double *componentSet = malloc(sizeof(*componentSet) * 3);
    componentSet[0] = 1;
    componentSet[1] = 2;
    componentSet[2] = 3;
    return componentSet;
}

double *comps = vectorComponents();

// do something with them, then
free(comps);


(Documentation

也:


  如果我什么都不做,那就行不通了。


也许值得一提的是它没有用,因为它调用了未定义的行为。您代码中的componentSet是本地自动数组-在其作用域的末尾无效(即,在函数返回时它已被释放-正是您不希望发生的事情。)

关于objective-c - Objective-C中的动态分配,返回指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13709844/

10-10 23:53