4 votes

Supposons que foo.c contienne la définition globale int secret = 4 ;

Cette question m'a été posée dans le cadre d'un examen final. Je suis un peu perplexe à ce sujet. (Ceci est compilé avec PuTTy dans un environnement Linux)

Question : Supposons que foo.c contient la définition globale int secret = 4; y bar.c contient la définition globale char secret[16]; Que se passera-t-il lorsque foo.c y bar.c sont liés entre eux ? Quelle quantité de mémoire sera réservée aux secret ?

Ma tentative : Je pense que, puisqu'il s'agit de définitions globales du même nom, elles sont toutes les deux fort et ne se compilera pas (c'est-à-dire qu'il y aura une erreur de l'éditeur de liens) parce qu'on ne peut pas avoir plusieurs variables fortes. Là où je suis confus, c'est la quantité de mémoire qui sera réellement réservée pour les secret . C'est peut-être trivial, mais est-ce que ce serait (16 octets puisque char est 1 octet) + 4 octets pour l'entier, ce qui donnerait un total de 20 octets ?

Merci d'avance

1voto

EHH Points 431

Il s'agit de définitions contradictoires, de sorte qu'il n'y a pas de lien et qu'aucune mémoire n'est réservée pour le secret, ni pour quoi que ce soit d'autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X