Can you explain me why is the "static" keyword important here ?
Without it the foos exist on the stack.
Actually, I thought that all PROGMEM var (in FLASH) were static, since the FLASH isn't written during the execution of the program
We are discussing a C++ program which means C++ rules still apply. Without the static they are automatic variables which puts them on the stack.