2016-11-25 109 views
-1

嗨,我有这样的代码下面,只是增加了逻辑视图中不完整的语法内存是否会被破坏?

int globalVar; 

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

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

    return (data); 
} 

所以我担心的是,如果我被分配到当地的指针返回globel变量,然后将它在内存或丢失时功能结束?

谢谢,

回答

2

不,这里没有内存泄漏。内存泄漏只是由不平衡的mallocfree调用引起的,并且在这里没有任何事情发生。

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

1

所以我关心的是,如果我通过分配给本地指针返回globel变量,那么它将在内存中或功能结束时丢失?

如果它是一个全局变量,那么它就会有静态存储时间,它会通过本地指针返回时,它不会被“丢失”。

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