begin process at 2012 05 29 21:23:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Problème de malloc


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de malloc

jeudi 17 juin 2010 à 11:53:28 | Problème de malloc

sylvain230

Bonjour,

Je ne comprends pas mon problème. Ca doit être un problème de réallocation

Voila mon code :

// Initialisation de fen_remontee de -2 à +2
int cpt = -2;
int demi_fen_remontee = 2 ;
unsigned int i_max ;

double * signal_fen;
pic_potentiels[nb_decomposition] = (unsigned long*) malloc( taille * sizeof( unsigned long) );
//signal_fen = (double*) malloc ( taille * sizeof(double) );



for(unsigned int i_ech = nb_decomposition - 1 ; i_ech > 0 ; i_ech--)
{

printf ( "Etude de l'echelle : %u " , i_ech ) ;
printf(" \n");
signal_fen = (double*) malloc ( tailles_ond[i_ech ] * sizeof(double) );

// On copie notre signal dans une variable temporaire
for( i = 0 ; i < tailles_ond[i_ech] ; i++)
{
//printf("%f \n", ond_d[i_ech][i]);
signal_fen[i] = abs(ond_d[i_ech][i]); // On récupère les valeurs de chaque décomposition et on prend la valeur absolue
}

// On rajoute les pic potentiels à la suite
for(unsigned int i_pic = 0 ; i_pic < nb_pics[i_ech] ;i_pic++)
{
pic_potentiels[nb_decomposition][ i_pic + nb_pics[nb_decomposition] ] = pic_potentiels[i_ech] [ i_pic ];
}
nb_pics[nb_decomposition] = nb_pics[nb_decomposition] + nb_pics[i_ech];


//pic_potentiels[nb_decomposition] = (unsigned long*)malloc( nb_pics[nb_decomposition] * sizeof(unsigned long) );

// On cherche le maximum sur notre intervalle
for(unsigned int i_pic = 0 ; i_pic < nb_pics[nb_decomposition] ; i_pic++)
{


pic_potentiels[nb_decomposition][i_pic] = pic_potentiels[nb_decomposition][i_pic]*2 ;
max( & ( signal_fen [ pic_potentiels[nb_decomposition][i_pic] - demi_fen_remontee ] ) , 2*demi_fen_remontee+1 , & i_max );
pic_potentiels[nb_decomposition][i_pic] = pic_potentiels[nb_decomposition][i_pic] - demi_fen_remontee + i_max ;
}

FILE * fic ;
fic = fopen ( "D:\\tmp\\decomposition.txt" , "w" ) ;
double * sig_pics = ( double * ) malloc ( tailles_ond[i_ech] * sizeof ( double ) ) ;
double v_min , v_max ;

v_min = min ( signal_fen , tailles_ond[i_ech], NULL ) ;
v_max = max ( signal_fen , tailles_ond[i_ech], NULL ) ;

for( j = 0 ; j < tailles_ond[i_ech] ; j++)
{
sig_pics [ j ] = v_min ;
//printf("%f \n" ,sig_pics [ j ]);
//fprintf ( fic , "%f \n" /*,signal_fen[j]*/ ,sig_pics [ j ] ) ;
}

for( j = 0 ; j < nb_pics[i_ech ] ; j++)
{
sig_pics [ pic_potentiels[nb_decomposition][j] ] = v_max ;
printf ( "%f\n" ,sig_pics [ pic_potentiels[nb_decomposition][j] ]) ;
}
printf ( "Taille = %u\n" , tailles_ond[i_ech] ) ;

for ( j = 0 ; j < tailles_ond[i_ech ] ; j++ )
{
//sig_pics [ j ] = v_min ;
//signal_fen [ j ] = v_min ;
printf("%f \n" ,signal_fen[j]);
printf("%f \n" ,sig_pics [j]);
//fprintf ( fic , " %f \n" ,signal_fen[j] ,sig_pics [j] ) ;
//fprintf ( fic , " %e \n" ,signal_fen[j] ) ;
}
fclose ( fic ) ;
free(signal_fen);
}
for(unsigned int i_pic = 0 ; i_pic < nb_pics[0] ;i_pic++)
{
pic_potentiels[ nb_decomposition ][ i_pic + nb_pics[nb_decomposition] ] = pic_potentiels[ 0] [ i_pic ];
}
nb_pics[nb_decomposition] = nb_pics[nb_decomposition] + nb_pics[0];



Je peux faire un tour de boucle.
J'arrive à afficher les valeurs signal_fen[j] et sig_pics [j] mais je ne peux pas faire un fprintf ( fic , " %f \n" ,signal_fen[j] ,sig_pics [j] ) ;

Il me dit :

Windows a déclenché un point d'arrêt dans StageM1.exe.

Cela peut être dû à une défaillance du tas qui indique un bogue dans StageM1.exe ou l'une des DLL chargées.

Cela peut également être dû à l'appui sur la touche F12 lorsque StageM1.exe a le focus.

La fenêtre Sortie peut contenir des informations de diagnostic supplémentaires.



La je vois vraiment pas
Aidez moi svp merci d'avance !!
Hésitez pas à poser des questions si vous ne comprenez pas mon problème
jeudi 17 juin 2010 à 13:09:01 | Re : Problème de malloc

CptPingu

Administrateur CodeS-SourceS
Si tu peux me faire un exemple qui met en avant ton problème et qui compile, je peux t'aider à le débugger.

PS: Tu fais du C ou du C++ ? Je serais tenté de dire que tu fais du C. Dans ce cas, si tu as besoin de "caster" les retours de ton malloc, c'est que tu utilises un compilateur C++ pour faire du C (dev-c++ ?). Attention, certaines choses du C ne sont pas prises en charge par un compilateur C++ (ou pris différemment). Cette remarque n'a pas de rapport avec ton problème.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
jeudi 17 juin 2010 à 14:28:39 | Re : Problème de malloc

sylvain230

En gros je peux faire ca :

printf("%f \n" ,signal_fen[j]);

Mais je ne peux pas faire ca :

fprintf(fic, "%f \n" ,signal_fen[j]);

L'initialisation de signal_fen est :

double * signal_fen;
signal_fen = (double*) malloc ( tailles_ond[i_ech ] * sizeof(double) );

Sachant que pour tailles_ond[ i_ech ] : On a
unsigned int * tailles_ond = (unsigned int*) malloc( nb_decomposition * sizeof(double) );

En fait on est sur une décomposition par ondelettes db4 et nb_decomposition correspond au nombre de fois ou l'on a décomposé le signal.

En fait je crois qu'il y a tout simplement une différence avec ca
pic_potentiels[nb_decomposition][i_pic] = pic_potentiels[nb_decomposition][i_pic] *2 ;

et ca

pic_potentiels[nb_decomposition][i_pic] = (pic_potentiels[nb_decomposition][i_pic]) *2 ;

C'est possible ?

PS: Je fais plutot du C et du C++ quand ca m'arrange. C'est peut être pas une bonne idée.
Je travaille sous VS 2010.
jeudi 17 juin 2010 à 16:41:22 | Re : Problème de malloc

CptPingu

Administrateur CodeS-SourceS


pic_potentiels[nb_decomposition][i_pic] = pic_potentiels[nb_decomposition][i_pic] *2 ;
pic_potentiels[nb_decomposition][i_pic] = (pic_potentiels[nb_decomposition][i_pic]) *2 ;


Sont strictements identiques.

Sans code que je peux compiler, j'aurais du mal à t'aider à cerner l'erreur.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio


Cette discussion est classée dans : nb, pic, fen, decomposition, pics


Répondre à ce message

Sujets en rapport avec ce message

nb de seconde ---> COleDateTime [ par owel ] salut !!!!je voudrai savoir comment faire pour convertir un short qui represente un nb de seconde en un COleDateTime ....ou plus simplement si c possi Pb avec 'SYSTEM' [ par AtomicREW ] Je vous previens tout de suite mon code est vraiment foireux, j'ai commence le C qu'aujourd'hui et sans doc a proprement dit. J'ai mis la ligne où Dev Q:sous bc6, quel attribut pour rendre une fen tjrs visible ? [ par andros ] SalutJe répète donc : sous BC6++, quel serait l'attribut pour que ma fenêtre soit toujours visible malgré qu'elle ne soit plus active ?Bon week-end !a [C] lignes d'un fichier dans un tableau : Segmentation fault [ par Michel76 ] Bonjour,Pardonnez-moi de cette question de débutant.Soit un fichier contenant :-----001002-----Je souhaiterais mettre chacune des lignes de ce fichier algorithme de gauss et decomposition LU [ par speedamine ] bonjour a tous.je voudrai avoir des algorithmes ,ecrits en borland pascal,suivants:methode de gauss ordinaire pour la resolution d'un systeme .la deco tableau d'une classe... [ par jonathan100 ] Bonjour a tous, Voici mon problème. J'ai une classe Voiture, et une classe table qui contient un tableau de Voiture. Voici le code de la classe table, CORRECTION HELP PLEASE NOOB [ par ziziboss ] #include #include #include int main (){ int nb_alea = 0; int nb_choisi = 0; randomize (); nb_alea = random(101); do { clrscr (); printf("Vous Concaténation int et Cstring [ par maghella ] Salut!Je voudrais concanténer un chiffre et une lettre.Ex: mot="A";Nb=1;mot est de type CString et nb de type int.Je voudrais ke ça donne dans mot: A1 char * test[264] [ par youpiyoyo ] si je créé cette variablechar * test[264];et si je fait test[0]="test";test[1]="test1";ceci fonctionnemais si par exemple si je faisint nb=0;char char A l'aide evidemment [ par oRTEEZ ] Bonjourj'ai vraiement besoin d'aide.Voila je travaille sur un prog capable d'ouvrir de .PIC et des .JPG puis de dessiner un cadre dessue et enfin d'ec


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales