Salut,
Bienvenue dans la runtime C !
Franchement, c'est est une usine à faire des bugs, des failles et des problèmes de portabilité...
Il se trouve que *printf dispose en standart d'un spécifieur
n, qui indique le nombre de caractères écrit jusque là.
Le problème est qu'il faut quand même passer une chaîne tampon (Encore que ça dépend de l'implémentation !)...
Tu as aussi des utilisations foireuses de
snprintf (Plusieurs appel, passage de NULL...)
Le problème est que le comportement varie d'un compilo à l'autre, voire d'une version de compilo à l'autre...
Peut être que buffer -> NULL, et count -> 0 fonctionnerait sur VC > 6 (Ne fonctionne pas en 6).
Autre méthode, faire des realloc jusqu'à ce que la taille soit suffisante, exemple glibc
ici...
Il y a aussi
asprintf qui fait lui même le malloc, mais très rarement dispo (Hors linux).
Sans parler de StringCbPrintfEx, sprintf_s...
Franchement, à côté de tout ça, les 2ko réservé sur la pile c'est vraiment du détail et ne devrait pas poser de problème de consommation mémoire en regard du reste (Et c'est bien mieux niveau perf).
Le seul risque étant que 2ko, ça ne suffise pas (Donc vaut mieux utiliser snprintf ou sprintf_s pour parer au plantage, même si ça n'empêchera pas l'utilisateur d'avoir une chaîne tronquée...).