提问人:Alper Tangil 提问时间:7/20/2023 最后编辑:philipxyAlper Tangil 更新时间:9/11/2023 访问量:67
我怎样才能同时返回和释放内存
How can i return and also free memory at the same time
问:
我有一个函数,可以分配内存,然后用数据填充它,然后返回它。
我想释放这个分配的内存,但是如果我在返回之前释放它,它将返回 null,如果我尝试在返回后释放,因为函数在看到返回时结束,它不会释放。
我尝试了返回和返回之类的方法,但它们不起作用。(free(x));
((x)free);
答:
3赞
ikegami
7/20/2023
#1
访问已释放的内存是未定义的行为。因此,返回指向已释放内存的指针是没有用的。您只需将其留给调用方,以便在完成后将其释放。
1赞
Mateo Vozila
7/20/2023
#2
您可以将指针传递到函数,分配内存并将所需的数据写入其中。函数返回后,指向数据的指针将在调用方函数中可用,与以前相同,并分配内存并存储数据。在对数据执行所需的操作后,您可以释放那里的内存。
评论
x = strdup(); free(x);
strdup