gpt4 book ai didi

objective-c - Objective-C 中的动态分配,返回指针

转载 作者:行者123 更新时间:2023-12-03 16:50:07 25 4
gpt4 key购买 nike

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

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 )

另外:

If I don't do anything it won't work.

也许值得一提的是,它不起作用,因为它调用了未定义的行为。代码中的 componentSet 是一个本地自动数组 - 它在其范围结束时失效(即,它在函数返回时被释放 - 正是您希望不发生的情况。 em>)

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com