Bon je laisse tomber le mapping complet des lignes, déjà pouvoir masquer les instruction SQL est du grand confort !
J'en profite pour poser une question sur "Canard Overflow" d'ordre plus général sur la gestion de la mémoire et le scope des variables en C.
Si on prend une définition comme par ici:
https://stackoverflow.com/questions/...stack-and-heap,
il y a cette définition:
Qu'est-ce qui ce passe si je stocke l'adresse d'une telle variable dans un pointeur qui a lui été alloué dynamiquement ?
Par exemple dans le code suivant, est-ce que le buffer est bien alloué dans la stack ?
Si c'est bien le cas est-ce que c'est dangereux de faire 'myStuff->data=buffer;' ?
Quand est-ce que la phase de deallocation automatique arrive (prédictible ou non prédictible) ?
Code:
typedef struct stuff { char *data;} stuff;
void helloSTACK(stuff* myStuff)
{
puts("--> helloSTACK()");
char buffer[13] = "HELLO STACK!";
myStuff->data=buffer;
printf("value of buffer inside method: %s\n",buffer);
printf("value of myStuff->data inside method: %s\n", myStuff->data);
puts("<-- helloSTACK()");
}
void helloHEAP (stuff* myStuff)
{
puts("/* allocation on the STACK*/");
char *buffer = calloc(16, sizeof(char));
sprintf(buffer, "%s", "HELLO HEAP!");
myStuff->data = buffer;
}
void prepareStuff() {
/*dynamic allocation: in the HEAP, not removed until free is called */
stuff* myStuff = calloc (1, sizeof(stuff));
puts("--------------------------------------------------");
helloSTACK(myStuff);
printf("Stack data: %s\n", myStuff->data);
puts("--------------------------------------------------");
helloHEAP(myStuff);
printf("Heap data: %s\n", myStuff->data);
}
Ayez pitié d'un pauvre dev Java égaré dans les contrées inhospitalières des méthodes foireuses des 'strings' de la stdlib du C et a qui le Garbage Collector manque énormément