Accueil > Forum > > > > compilation mai au lancement "erreur la memoire ne peu pas pas etre read"
compilation mai au lancement "erreur la memoire ne peu pas pas etre read"
vendredi 23 décembre 2005 à 10:44:54 |
compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

touny23
|
je maitrise pas tro le C.mai comme j ai un projet a faire dessus pour la rentré , je sui obligé de m y mettre . j arrive a compiler sous dev-cpp mai lors de l execution j ai cette erreur qui apparait : L'instruction à "0*0040148a" emploie l adresse mémoire "0*00000000".La mémoire ne peut pas etre"read". cliquez sur OK pour terminer le programme. cliquez sur Annuler pour déboguer le programme
je sai pas d ou ça vien
je vous envoie le programme : si vous pouviez m aider ça m arrnagerai enormement ...sinon j essaierai sous unix a la rentrée ...merci d avance
#include<stdio.h> #include<stdlib.h> struct matrice { int dim1; int dim2; int type; double **tab; }; void creation (struct matrice M) { int i,j; printf("creation d'une matrice!!!!\n"); printf("entrer la 1e dimension="); scanf("%d",&M.dim1); printf("entrer la 2e dimension="); scanf("%d",&M.dim2); printf("entrer le type de la matrice=\n"); printf("1-matrice pleine\n"); printf("2-matrice triangulaire inférieure\n"); printf("3-matrice triangulaire supérieure\n"); scanf("%d",&M.type); if(M.type==1){ M.tab=(double **)malloc(M.dim1*sizeof(double *)); if(M.tab==NULL)printf("echec allocation mémoire\n"); for(i=0;i<M.dim1;i++) { M.tab[i]=(double *)malloc(M.dim2*sizeof(double)); if(M.tab[i]==NULL) {for(j=0;j<i;j++){ free(M.tab[j]); printf("echec allocation mémoire\n"); } } } printf("chiffre de la matrice??"); for(i=0;i<M.dim2;i++){ printf("%d e ligne\n",i); for(j=0;j<M.dim1;j++)scanf("%lf",&M.tab[i][j]); } } }
void affichage(struct matrice M) { int i,j; for(i=0;i<M.dim2;i++){ for(j=0;j<M.dim1;j++){printf("%lf",M.tab[i][j]);} printf("\n"); } }
main() { struct matrice M1; creation(M1); affichage(M1); system("pause"); }
|
|
vendredi 23 décembre 2005 à 11:23:10 |
Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

luhtor
|
Tu te mélanges les pinceaux avec le passage d'argument. Tu oublies
qu'un argument n'est qu'une copie de l'objet initial. Donc si tu
modifies la copie, ca change rien à l'objet initial. Donc quand tu fais
affichage(M1). Tu affiches une matrice qui n'est pas encore initialisée.
Faut faire des passages par référence, (avec & si tu fais du C++, ou par pointeur, si tu fais de C).
Bon mais ca doit pas etre la seule erreur, mais essai de mieux le présenter, la c'est pénible à déchiffrer.
Tu vois ce genre de chose est étrange:
if(M.tab==NULL)
printf("echec allocation mémoire\n");
for(i=0;i<M.dim1;i++)
{
M.tab[i]=(double *)malloc(M.dim2*sizeof(double));
...
Ya une erreur d'allocation, mais tu vas quand meme allouer tous les éléments de la matrice ...
Bon aller cyao.
|
|
vendredi 23 décembre 2005 à 11:24:32 |
Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

theguitou
|
Il y a un pb avec ta structure. Le code ci dessous marche. Mais essay quand même de comprendre !!
// tester sous linux.
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int dim1;
int dim2;
int type;
double **tab;
}matrice;
void creation (matrice *M)
{
int i,j;
printf("creation d'une matrice!!!!\n");
printf("entrer la 1e dimension=");
scanf("%d",&M->dim1);
printf("entrer la 2e dimension=");
scanf("%d",&M->dim2);
printf("entrer le type de la matrice=\n");
printf("1-matrice pleine\n");
printf("2-matrice triangulaire inférieure\n");
printf("3-matrice triangulaire supérieure\n");
scanf("%d",&M->type);
if(M->type==1){
M->tab=(double **)malloc(M->dim1*sizeof(double *));
if(M->tab==NULL)printf("echec allocation mémoire\n");
for(i=0;i<M->dim1;i++)
{
M->tab[i]=(double *)malloc(M->dim2*sizeof(double));
if(M->tab[i]==NULL)
{for(j=0;j<i;j++){
free(M->tab[j]);
printf("echec allocation mémoire\n");
}
}
}
printf("chiffre de la matrice??");
for(i=0;i<M->dim2;i++){
printf("%d e ligne\n",i);
for(j=0;j<M->dim1;j++)scanf("%lf",&M->tab[i][j]);
}
}
}
void affichage(matrice M)
{
int i,j;
for(i=0;i<M.dim2;i++){
for(j=0;j<M.dim1;j++){printf("%lf",M.tab[i][j]);}
printf("\n");
}
}
int main()
{
matrice M1;
creation(&M1);
affichage(M1);
system("pause");
return 0;
}
|
|
vendredi 23 décembre 2005 à 11:25:00 |
Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

cosmobob
|
salut, tu dois passer ta structure matrice par un pointeur. void creation (struct matrice* M) { // remplacer M. par M-> } dans ton main: main() { struct matrice M1; creation(&M1); affichage(M1); system("pause"); } en C, tu ne peux pas modifier un objet que tu passes par valeur dans un procedure. Si tu veux le modifier, tu dois le passer par adresse (avec un pointeur) a+ 
|
|
vendredi 23 décembre 2005 à 11:26:29 |
Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

cosmobob
|
bon ben on t'a tous répondu en meme temps 
|
|
vendredi 23 décembre 2005 à 11:38:02 |
Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

luhtor
|
Effectivement, et en plus pour dire la meme chose. :)
|
|
vendredi 23 décembre 2005 à 14:59:49 |
Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

Joky
|
Tu dois passer par un pointeur sur ta structure ;)
Oups :)
Trop tard !
Lol if(!Meilleur("Joky")) return ERREUR;<
|
|
vendredi 23 décembre 2005 à 15:31:52 |
Re : compilation mai au lancement "erreur la memoire ne peu pas pas etre read"

touny23
|
merci de vos réponses si rapides. je vai essayer de comprendre maintenant
|
|
Cette discussion est classée dans : int, printf, tab, for, matrice
Répondre à ce message
Sujets en rapport avec ce message
Problem Affichage de mon Tableau [ par Orezza ]
salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le
help une fonction qui a besoin de vous [ par natacha86 ]
Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell
pb en c urgenttttttttttttttttt [ par natacha86 ]
bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as
Return tableau? [ par zut69 ]
Bonjour,Je suis en train d'écrire un petit programme sur les matrices en C, mais vu que je veux faire quelque chose d'assez général, j'ai besoin que d
Produit matriciel en c renvoit des valeurs complètement fausses [ par bilel59 ]
Bonjout à tous, je sollicite votre aide pour la raison indiquée dans le titre, en effet le produif matriciel que j'effectue renvoit des valeurs vraime
la programmation de l'algorithme du simplexe [ par soums2009 ]
salut à tous j'ai un probleme avec mon code qui implemente l'algoritme du symplexe et je sollicite votre aide pour pouvoir terminer et rendre mon dev
aide sur un prog [ par jsuititidu27 ]
Bonjour, j'ai besoin d'un petit coup de main. ceci est un exo qui demande d'écrire un programme de tri de chaines de caractères. J'ai donc écrit le co
HELP [ par alex64100 ]
BONOURje doit réaliser un prog de tri de caractèresvoici mon code#include #include #include #include int main (int argc, char ar
algorithme de greedy [ par starbluesky ]
<link rel="Fi
class matrice [ par ciaonataha ]
J'ai ecrit le programme classe matrice...mais j'ai les error comme:"matrice.cpp:269: error: no match for 'operator=' in 'b = matrice::Mat_decomposer(a
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|