Problème avec un pointeur de tableau de structure

Bonjour

Je suis me inspiré de l'exemple pref2struct fourni avec l'ESP32 pour écrire ceci :

La structure est déclarée dans un .h indépendant :

typedef struct  {
  public:
    bool used = false;
    uint8_t roller = 0;
    uint8_t hour = 0;
    uint8_t minute = 0;    
    bool command = false;
}prgm_t;
prgm_t * prgms[PRGM_COUNT];

void loadprgms() {
  
  Serial.println("PREFS - loadprgms");

  preferences.begin("prgms");

  size_t prgms_length = preferences.getBytesLength("prgms");

  Serial.print("PREFS - loadprgms - Size in memory :");
  Serial.println(prgms_length);

  if (prgms_length != PRGM_COUNT * sizeof(prgm_t)) { // simple check that data fits
    Serial.println("PRGM - loadprgms - Memory invalid or empty, cleaning");
    Serial.println(sizeof(prgms) * sizeof(prgm_t));
    
    
    preferences.putBytes("prgms", prgms, PRGM_COUNT * sizeof(prgm_t));
  }

  char buffer[PRGM_COUNT * sizeof(prgm_t)];
  
  preferences.getBytes("prgms", buffer, prgms_length);
  *prgms = (prgm_t *) buffer;
  Serial.println("PREFS - loadprgms - Data loaded");

  for (int i=0;i<prgms_length;i++) {
    Serial.println(buffer[i], HEX);
  }

  prgm_t *zprgms = (prgm_t *) buffer;

  for (int i=0;i<PRGM_COUNT;i++) {
    Serial.print("PREFS - loadprgms - prgm : ");
    Serial.print(i);
    Serial.print("/");
    Serial.println(PRGM_COUNT);
    
    Serial.print("PREFS - loadprgms - zprgms Roller : ");
    Serial.println(zprgms[i].roller);

    Serial.print("PREFS - loadprgms - prgms Roller : ");
    Serial.println(prgms[i]->roller);
  }
  
  
  preferences.end();

zprgms est local à la fonction, j'accède à roller (zprgms*.roller) correctement*
prgms est global, l'ESP reboote quand j'accède à roller (prgms*->roller)*
Mon but est de valoriser prgms dans la fonction et de pouvoir y accéder à l'extérieur.
J'ai un peu de mal à comprendre les types que j'utilise, c'est la cause du problème :slight_smile:
Merci.
David.

Je pense avoir trouvé.
J'avais le pointeur global prgms qui pointait sur une variable locale buffer.