2016-11-25 220 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變量,那麼它將在內存中或功能結束時丟失?

如果它是一個全局變量,那麼它就會有靜態存儲時間,它會通過本地指針返回時,它不會被「丟失」。

當您通過指針訪問任何對象時,重要的是您訪問的對象的存儲持續時間;而不是指針的存儲時間。因此,假設您的全局變量具有靜態存儲持續時間(通常在源文件頂部的函數之外定義),那麼您沒有問題。