Supprimer un variable

Messages postés
14
Date d'inscription
lundi 1 décembre 2003
Statut
Membre
Dernière intervention
7 octobre 2006
- - Dernière réponse : BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
- 9 oct. 2006 à 08:41
Bonjour je suis débutant en c++

J'ai visiblement un probleme de memory leak dans mon programme.

visiblement cela vient du fait que je reatribut des valeurs a des meme variables durant mon programme.
Alors jessai de comprendre comment reinitialisé une variable (style unset() en php)

j'essai cela :
 #include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string>
#include
#include <fstream>
using namespace std;




int main()
{


char  essai[2]="A";
printf(essai);
printf("\n");
delete[] essai;
printf(essai);
system("pause");
}

le deuxieme printf(essai) affiche encore le A alors que la variable est censé etre reinitialisée...

Quelq'un peut t'il m'éclairer ? merci bcp
Afficher la suite 

9 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
'essai' est une réservation sur la pile, pas une alloc evec new, impossible donc de désallouer avec delete.

Faut lire un bouquin de C++, impossible d'y aller par tatonnement.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
150
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
16 février 2009
0
Merci
Je sais pas que c'est le grosse frime ce lien mais je trouve ce tutorial très bien. Il remplace assez bien un livre.
Je te laisse le regarder avant de continuer: http://www.siteduzero.com/tuto-3-8-0-apprenez-a-programmer-en-c.html
Commenter la réponse de Oeil_de_taupe
Messages postés
14
Date d'inscription
lundi 1 décembre 2003
Statut
Membre
Dernière intervention
7 octobre 2006
0
Merci
Merci, je vais le faire.. cela veux t'il dire que comme ca : new char  essai[2]="A";
ca marchera ?
Commenter la réponse de Nagalta
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
Va lire, on ne refera pas un tuto sur le forum, c'est trop long.
Le forum est là pour expliquer un prob particulier sur un prog, dans ton cas c'est la syntaxe même du langage et sa mise en oeuvre qui manque.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
85
Date d'inscription
dimanche 5 mars 2006
Statut
Membre
Dernière intervention
4 août 2014
0
Merci
voici une solution qui marche:
les autres bibliotheque comme: conio.. ne sont pas nessecaire.
#include <windows.h>
#include <stdio.h>
#include <string>



main()
{
char  essai[2]="z";
printf(essai);
printf("\n");
strcpy(essai,"");
printf(essai);
system("pause");
}







Ellouze Zied
Commenter la réponse de zied86
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
ouhhhh dur dur...

char essai[2]; // = "z" NON ça place une chaine en segment data
essai[1] = 0; // terminateur NULL
essai[0] = 'z';

strcpy() est une boucle, totalement inutile ici:
essai[0] = 0; // idem en 1 seul cycle

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
ah oui autre chose:
mettre un zéro en 1er octet de chaine ne dépilera pas pour autant, la variable n'est en rien supprimée.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
85
Date d'inscription
dimanche 5 mars 2006
Statut
Membre
Dernière intervention
4 août 2014
0
Merci
on ne peut pas mettre : essai[1]=0;//c'est une chaine de caractere il faut mettre les variables entre 2 ".
                                    essai[0]='1';//on le declare char essai='1'

Ellouze Zied
Commenter la réponse de zied86
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
essai[1] n'est pas une variable mais l'accès mémoire à l'octet d'une variable.

Allez lire un bouquin de C et revenez ensuite sinon on ne fera que perdre notre temps.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews