Erreur: Invalid allocation size

Résolu
chalmia2s Messages postés 33 Statut Membre -  
chalmia2s Messages postés 33 Statut Membre -
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: 4 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
Configuration: Windows Vista
Internet Explorer 7.0

4 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Poste ton code ;)
    0
  2. chalmia2s Messages postés 33 Statut Membre
     
    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;
    }
    0
  3. chalmi2as
     
    merci de me répondre si vous avez une idee, je suis bloquée
    pleaaaaaase
    0
  4. chalmia2s Messages postés 33 Statut Membre
     
    J'ai souvent des problemes avec les pointeurs et les tableaux...
    pour affecter un tableau à un autre il me faillait faire

    for (i=0; i<r; i++){
    for (j=0; j<c; j++){
    im[i][j] =re[i+j*r]

    c bon de le savoir ...
    0