Probleme de tableau

manta7 Messages postés 105 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 13 décembre 2008 - 23 janv. 2005 à 13:21
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 23 janv. 2005 à 16:53
Bonjour, j'ai un petit problème avec la compilationde ce code :

int *t;
t = malloc(B * sizeof (int));

Je suis sous Microsoft Visual C++ 6 mais je programme en c et il me met :

cannot convert from 'void *' to 'int *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast

Aidez moi svp...

6 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 janv. 2005 à 13:55
Salut,
Voila comment faire:

#include <stdio.h>
#include <malloc.h>

int main()
{
int * value;

/* Alloue de la mémoire */
value = malloc( 50 );
if( value == NULL )
printf( "Mémoire insuffisante!\n" );
else
{
printf( "L'allocation a réussi!\n" );
free( value);
printf( "La mémoire a étét libéré!\n" );
}

return 0;
}

Voila , et n'oublie pas de libérer la mémoire en fin de traitement.

Shell
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 janv. 2005 à 13:57
J'oubliais,
Pour expliquer ton erreur, cela vient du fait que tu alloue ta mémoire en même temps que la déclaration de ta variable.
Ainsi au lieu de faire référence au pointeur, tu fait référence à sa valeur (et non à son adressage).

Shell
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 janv. 2005 à 13:57
il sort d'où ton B * (int) ????

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
23 janv. 2005 à 14:04
il faut aussi que tu cast ce que te renvoie ton malloc!
il te renvoie un pointeur de type void*
et toi tu veux un pointeur de type int*
donc je te conseille de faire:
t = (int*) malloc(... * sizeof(int));

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0

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

Posez votre question
manta7 Messages postés 105 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 13 décembre 2008
23 janv. 2005 à 14:18
Le B c'est un int.
Merci a tous !!
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
23 janv. 2005 à 16:53
julienbj > En C, aucun besoin de caster lors d'un appel a malloc.

+2(p - n)
0
Rejoignez-nous