我想确保当它不是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/