Supposons que j'appelle
int execve(const char *filename, char *const argv[], char *const envp[])
Où ai-je mallocédité la mémoire pour envp, alors comment le programme filenameaccède-t-il au contenu de ce tableau lorsqu'il execveefface toute la mémoire précédente (y compris le tas)?
argvet envpquelque part, puis les rend disponibles pour la nouvelle image de processus. Il s’agit là d’un détail d’implémentation, ce qui ne devrait pas vous intéresser, à moins que vous ne fassiez quelque chose de profond et de magique, ou de piratage du noyau.
execvecopie argv [] et envp [] dans un autre domaine (éventuellement la mémoire du noyau) avant de supprimer le reste, n'est-ce pas?