Problem d'allocation avec visual

cs_clem45 Messages postés 3 Date d'inscription lundi 21 juillet 2003 Statut Membre Dernière intervention 23 juillet 2003 - 21 juil. 2003 à 18:05
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 23 juil. 2003 à 18:16
J'ai un probleme bizarre avec malloc ( ou calloc), voila, j'alloue un tableau d'int de la maniere suivante :

tab_sol[m]=new Solution; // il passe nickel cette ligne

tab_sol[m]->jour=(int*)calloc(n,2); //n=10 a ce moment


Solution est une structure comprenant le champs : int* jour.
Quand je lance le debug ca marche nickel, mais quand je l'execute il me plante en me disant que j'ecris n'importe oú, il me l'as fais pour d'autre allocations du meme style.

Si quelqu'un pouvais me dire ce qu'il a a me faire chier de la sorte...

bien cordialement

clem

5 réponses

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
21 juil. 2003 à 18:21
Je ne connais pas calloc, mais je pense que 2 est le nombree d'octets a allouer, or, un int* est une adresse memoirs, donc fais 4 octets.

Mais il faut mieux utiliser malloc:

(int**)malloc(n*sizeof(int*));

Et oui, si tu veut allouer un tableau de pointeur (int*), cela donne un pointeur de pointeur de int, d'ou le int*

:-p :sleepy) :shy) :sleepy) :-p
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
21 juil. 2003 à 18:22
execuse : d'ou le int**
:-p :sleepy) :shy) :sleepy) :-p
0
cs_clem45 Messages postés 3 Date d'inscription lundi 21 juillet 2003 Statut Membre Dernière intervention 23 juillet 2003
23 juil. 2003 à 15:23
oui tu met 4 octets CAR c'est un int** (tableau de pointeur), moi j'ai un int* (tableau d'int) donc 2 octets par case.

pour info: calloc(n,2)= malloc(n*2)...

8)
klaim
0
cs_clem45 Messages postés 3 Date d'inscription lundi 21 juillet 2003 Statut Membre Dernière intervention 23 juillet 2003
23 juil. 2003 à 16:20
Excuse moi, j'ai déconné, il faut que j'utilise new et delete plutot que malloc. Ca marche nickel maintenant.

merci quand meme :big)

klaim
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
23 juil. 2003 à 18:16
Non non malloc et free marche tres bien !!!
:-p :sleepy) :shy) :sleepy) :-p
0
Rejoignez-nous