记忆会被破坏吗?

时间:2016-11-25 10:23:36

标签: c pointers

嗨我的代码如下,只是添加了逻辑视图而不是完整语法

int globalVar;

static void* average()
{
  void *data = NULL;

  if (true)
  {
      globalVar = getAverage();
      data = ((void *)&globalVar);
  }

  return (data);
}

所以我担心的是,如果我通过分配本地指针返回globel变量那么它会在内存中还是在函数结束时丢失?

谢谢,

2 个答案:

答案 0 :(得分:2)

此处没有内存泄漏。内存泄漏仅来自不平衡的mallocfree调用,并且没有类似的内容发生在这里。

(假设getAverage()本身泄漏)。

答案 1 :(得分:1)

  

所以我担心的是,如果我通过分配本地指针返回globel变量那么它会在内存中还是在函数结束时丢失?

没有

如果它是一个全局变量,那么它将具有静态存储持续时间,并且当通过本地指针返回时它不会“丢失”。

当您通过指针访问任何对象时,重要的是您访问的对象的存储持续时间;不是指针的存储持续时间。因此,假设您的全局变量具有静态存储持续时间(通常在源文件顶部定义了外部函数),那么您没问题。