Bonjour à tous,
Je me heurte à une question pour laquelle je ne trouve pas de réponse : la zone allouée par un tableau déclaré statiquement est-elle bien locale à la fonction, ou persistante en dehors ? J'ai écrit ce code :
/* ---BEGIN--- */
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int size;
char * tab;
} Test;
void modif (Test* tst) {
char* chaine = "TEST_AFFICHAGE";
tst->size = 14;
tst-> tab = chaine;
}
void affichage (Test tst) {
int i = 0;
for (i=0 ; i<tst.size ; i++)
printf("%c\n",tst.tab[i]);
}
int main() {
Test tst = {11, "DISPLAY_STR"};
modif(&tst);
affichage(tst);
return 0;
}
/* ---END--- */
Ca m'affiche TEST_AFFICHAGE. Pourtant comme tst.tab pointe sur "chaine" qui est censé être local à modif(), l'espace est-il désalloué ? Est-ce donc un "coup de bol" parce que la mémoire n'a pas été réallouée, ou l'allocation persiste-t-elle ?
Merci d'avance !