2017-10-20 48 views
0

Quelle est la différence entre Struct tag et Pointer to Struct? Sont identiques? Ou Voici mon exemple, Est-ce que obj et * var deux emplacements de mémoire différents?Est-ce que les balises Struct et Pointer to struct sont identiques?

#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

Possible duplication de [Différence entre l'allocation de mémoire statique et l'allocation de mémoire dynamique] (https://stackoverflow.com/questions/8385322/difference-between-static-memory-allocation-and-dynamic-memory-allocation) –

Répondre

1

Oui, ils le sont. La mémoire pour obj est allouée statiquement (sur la pile), alors que pour var dynamiquement (sur le tas). La principale différence pratique est que les objets alloués statiquement sont détruits à la fin du bloc, mais vous devez libérer la mémoire pour les objets attribués dynamiquement manuellement (afin d'éviter les fuites de mémoire). Vous pouvez trouver plus d'informations sur ce sujet here.