嗨我的代码如下,只是添加了逻辑视图而不是完整语法
int globalVar;
static void* average()
{
void *data = NULL;
if (true)
{
globalVar = getAverage();
data = ((void *)&globalVar);
}
return (data);
}
所以我担心的是,如果我通过分配本地指针返回globel变量那么它会在内存中还是在函数结束时丢失?
谢谢,
答案 0 :(得分:2)
此处没有内存泄漏。内存泄漏仅来自不平衡的malloc
和free
调用,并且没有类似的内容发生在这里。
(假设getAverage()
不本身泄漏)。
答案 1 :(得分:1)
所以我担心的是,如果我通过分配本地指针返回globel变量那么它会在内存中还是在函数结束时丢失?
没有
如果它是一个全局变量,那么它将具有静态存储持续时间,并且当通过本地指针返回时它不会“丢失”。
当您通过指针访问任何对象时,重要的是您访问的对象的存储持续时间;不是指针的存储持续时间。因此,假设您的全局变量具有静态存储持续时间(通常在源文件顶部定义了外部函数),那么您没问题。