我怎样才能同时返回并释放内存

问题描述 投票:0回答:2

我有一个函数,它分配内存,然后用数据填充它,然后返回它。

我想释放这个分配的内存,但如果我在返回之前释放它,它将返回 null,而且如果我尝试在返回后释放它,因为函数在看到返回时结束,所以它不会释放。

我尝试了诸如 return

(free(x));
和 return
((x)free);
之类的方法,但它们不起作用。

c memory return malloc free
2个回答
3
投票

访问已释放的内存是未定义的行为。因此,返回指向您释放的内存的指针是没有用的。您只需将其留给调用者,以在完成后释放它。


1
投票

您可以将指针传递给函数,分配内存并将所需的数据写入其中。函数返回后,指向数据的指针将在您的调用函数中可用,与之前分配的内存和存储的数据相同。在对数据执行所需操作后,您可以释放内存。

© www.soinside.com 2019 - 2024. All rights reserved.