Erreur: Invalid allocation size

Résolu
Signaler
Messages postés
31
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
15 octobre 2009
-
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
Bonjour,
je suis débutante en programmation, j'ai fait un programme sous Visual c++, pour avoir une dll. quand j'appelle la fonction dll , j'obtient l'erreur:
Debug Error
Program : C:\....\l.exe
Invalid allocation size: ............... Bytes

comme input j'ai un: int et une image (tableau WxLx3) et comme output: 2 tableau Nx1
dans la fonction, j'avais déclarer des tableaux [][] et j'ai fait des delete à la fin

comment faire pour regler ce problème?

Merci

8 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Très bien.
Si ton problème est réglé, click sur "réponse accepté" pour clore ce thread.
A+____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Salut
Peux tu nous montrer le code de ta dll ?
A+

____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
31
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
15 octobre 2009

voila le code:

#include <windows.h>
#include "LME_Ext.h"
#include "kp.h"

static lme_err kp(lme_ref lme, lme_int32 nargin, lme_int32 nargout)
{
double **im;
double *ind1, *ind2;
int i, j, n;
int r, c;
double img;
r = 0;
c = 0;
lme_int32 m, l;
lme_float64 *re;

if(!LMECB_GetMatrix(1, &m, &l, &re, NULL)) return 0;
r = m;
c = l;
img = (double)*re; // image!

im = new double*[r];
for(i=0; i<r; i++)
im[i] = new double[c];

**im = img;
n=0;
for (i=0; i<r; i++){
for (j=0; j<c; j++){
if (im[i][j] != 0 ){
n++;
}
}
}
ind1 = new double[n];
ind2 = new double[n];
int k=0;
for (i=0; i<r; i++){
for (j=0; j<c; j++){
if (im[i][j] != 0 ){
ind1[k] = i;
ind2[k] = j;
k++;
}
}
}

if(!LMECB_PushMatrix(n, 1, &ind1, NULL)) return 0;
if(nargout >= 2)
if(!LMECB_PushMatrix(n, 1, &ind2, NULL)) return 0;

for(int i=0; i<r; i++){
delete [] im[i];
}
delete [] im;
delete [] ind1; delete [] ind2;
return 1;
}

static lme_fn fn[] = {
{"kp", kp, 1, 1, 1, 2},
};

lme_int32 InstallFn(lme_ref lme, lme_fn **fnarray)
{
LMECB_DbgWriteStr(".....................................");
*fnarray = fn;
return 1;
}
Messages postés
31
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
15 octobre 2009

merci de me répondre si vous avez une idee, je suis vraiment bloquée
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Bon tu as des problèmes de pointeur:
J'imagine que dans *re il y a une matrice 1D, et tu fais img = (double)*re, img étant UN double. Tu ne sauvegardes donc que le premier élément de ta matrice re.
Puis tu fais **im = img; tu copies juste le premier élément de ton image.

Pourquoi ne pas faire une boucle?
for (i=0; i<r; i++){
for (j=0; j<c; j++){
   im[i][j] =re[i+j*r]
Pas sure que ca corrige entièrement ton problème mais ca permettra de voir plus clair.
A+

____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
31
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
15 octobre 2009

c vrai que j'ai quelques problemes avec les pointeurs et les tableaux...
j'ai corrigé cette faute, mais ça ne marche pas encore :-(
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Essaye alors d'isoler l'erreur:
Comme c'est une erreur sur l'allocation, met en commentaire tout dans ta fonction sauf l'allocation et la desallocation et test le retour des new pour bien voir si l'allocation a été réussi ou pas.

____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
31
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
15 octobre 2009

enfin ça marche, il y avait une faute d'indice des tableaux dans le code!!!!
 et des problemes quand j'appelais LMECB_pushMatrix(...)