考虑以下代码:
#include <stdio.h>
#include <stdlib.h>
char* address(void);
int main(void)
{
printf("The address is: %p", address());
return 0;
}
char* address(void)
{
char* temp = malloc(20);
return temp;
}
编译器不会给出任何类型的错误,并且根据我所读到的内容,我还没有遇到过这样的示例,无论它是有效的还是不推荐的方法。(考虑到内存释放是在某个时刻完成的)。返回本地分配的内存地址可以吗?
最佳答案
实际上取决于您的使用情况,只要您跟踪对 address() 的调用,并且当您不再需要该地址时释放该内存,应该没问题.
看看这个link (不是我的 - 在“动态对象”标题下)
关于c - 返回本地分配的内存(而不是本地变量)是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43297389/