2016-08-30 36 views
-1

我有這樣的結構:當使用指針用C

typedef struct { 
    int hi; 
} my_struct; 

是否有優勢,在使用這樣的:

my_struct *test = malloc(sizeof(my_struct)); 
test->hi = 1; 

取而代之的是:

my_struct test; 
test.hi = 1; 
+3

這取決於你在做什麼。只要看到這兩段代碼,就沒有實際的區別(除了動態分配的第一種情況,您不能忘記「釋放」內存)。 –

+1

兩者都會爲你的結構分配內存,但malloc()會從堆中分配,mystruct測試將在堆棧上分配 –

+0

它們非常有用,就像你希望你的程序實際產生某些東西而不是讓它私有計算本身(一個聰明的編譯器會優化爲無操作)。 ;-) – PSkocik

回答

1

無,通常情況恰恰相反。如果您可以使用的格式,以滿足您的requrement

my_struct test; 
test.hi = 1; 

那麼它總是更好,在運行時開銷少。在沒有它們的情況下,使用內存分配器功能通常沒有什麼優勢。