Les littéraux de chaîne que nous utilisons à l'intérieur fonctionnent-ils comme des variables automatiques? Ou sont-ils alloués en tas que nous devons libérer manuellement? J'ai une situation comme le code ci-dessous dans lequel j'affecte une chaîne littérale à un champ privé de la classe (marqué comme UN dans le code) et le récupère beaucoup plus tard dans mon programme et l'utilise (marqué comme deux). Est-ce que j'attribue une variable de la pile à un champ dans UN? Le code peut-il faire référence à un pointeur qui, dans ce cas, fonctionnait parce que le programme était assez petit? Je l'ai compilé et lancé, ça a bien fonctionné mais j'ai un crash étrange dans mon programme actuel où j'attribue des littéraux de chaînes aux champs de la classe comme ça et je suspecte le cas que j'ai mentionné ci-dessus. Dois-je déclarer la variable "s" comme un tableau de caractères à la place d'un pointeur? Je prévois d'utiliser std :: string, mais je suis juste curieux à ce sujet.Littéraux de chaîne dans les fonctions: variables automatiques ou allouées dans le tas?
Tout pointeur ou aide est, comme toujours, très apprécié :) Merci.
La modification est illégale. C'est vraiment un const. –
+1 à const char *. MemoryLeak :: s devrait être const et il devrait être const char * MemoryLeak :: retrieve() – quamrana