2017-10-20 393 views
0

Struct標籤和指向Struct的指針有什麼區別?是相同的?或者這是我的例子,是obj和* var兩個不同的內存位置?結構標記和指向結構的指針是否相同?

#include <stdio.h> 
#include <stdlib.h> 

struct alloc { 

    char data; 
}; 

int main(int argc, char** argv) { 

    struct alloc obj; 
    struct alloc *var = calloc(5,sizeof(struct alloc)); 
    (var -> data) = 'P'; 
    printf("Data:%d",obj.data); 

    return (EXIT_SUCCESS); 
} 
+2

[靜態內存分配和動態內存分配之間的差異]的可能重複(https://stackoverflow.com/questions/8385322/difference-between-static-memory-allocation-and-dynamic-memory-allocation) –

回答

1

是的,他們是。 obj的內存是靜態分配的(在堆棧上),而var是動態分配的(在堆上)。主要的實際區別是,靜態分配的對象在塊的末尾被銷燬,但您必須手動釋放內存以獲取動態分配的對象(以防止內存泄漏)。

您可以找到有關該主題的更多信息here