"désallocation" inopinée

Signaler
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
J'ai touvé un truc bizarre avec Visual C++ 6: le code suivant plante:

#include <string.h>

void f(char* a)
{
    a = new char[100]; // alloue de la mémoire pour a
}

int main(int argc, char* argv[])
{
    char* a;
    f(a);
    strcpy(a, "Bonjour"); // ca marche pas
    return 0;
}


finalement j'ai remarqué que ca marchait en mode release
est-ce que c'est normal ?

7 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Non réflexion faite ca marche pas non plus en mode release avec un autre code que je ne peux pas afficher ici
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Bon ca va j'ai compris, c'est tout a fait normal que ca ne marche pas (j'ai l'impression de parler tout seul moi)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
La solitude, ça n'existe pas.....
Tu avais la tete dans le manque d' "ETOILE".
BruNews, ciao...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Excuse moi BruNews, mais j'ai pas trop compris ton histoire d'étoiles
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
*a = new char[100]; allait pas mieux ?
si pas bon je vais me coucher.
BruNews, ciao...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Tu rigoles la j'espère ? C un peu ce que t'écris...
voila le code corrigé:

#include <string.h>

void f(char*& a) // référence sur pointeur
{
a = new char[100]; // alloue de la mémoire pour a
}

int main(int argc, char* argv[])
{
char* a;
f(a);
strcpy(a, "Bonjour");
return 0;
}
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
J'avais prevenu que j'irais me coucher, je vais donc aller digerer mon Martini.
A demain.
BruNews, ciao...