Hi the list,

One of my package has a memory issue that I do not manage to understand. The 
Memtest notes is here:
<http://www.stats.ox.ac.uk/pub/bdr/memtests/valgrind/kml-Ex.Rout>

Here is the message that I get from Memtest

--- 8< ----------------
 ~ Fast KmL ~
==27283== Invalid read of size 4
==27283==    at 0x10C5DF28: kml1 (kml.c:183)
...
==27283==    by 0x10C5DE4F: kml1 (kml.c:151)
...
==27283==    at 0x10C5DF90: kml1 (kml.c:198)
--- 8< ----------------


Here is the function kml1 from the file kml.c (I add some comments to tag the 
lines 151, 183 and 198)

--- 8< ----------------
void kml1(double *traj, int *nbInd, int *nbTime, int *nbClusters, int *maxIt, 
int *clusterAffectation1, int *convergenceTime){

    int i=0,iter=0;
    int *clusterAffectation2=malloc(*nbInd * sizeof(int));                      
// lines 151
    double *trajMean=malloc(*nbClusters * *nbTime * sizeof(double));

    for(i = 0; i < *nbClusters * *nbTime; i++){trajMean[i] = 0.0;};
    for(i = 0; i < *nbInd; i++){clusterAffectation2[i] = 0;};

    for(iter = 0; iter < *maxIt; iter+=2){
        calculMean(traj,nbInd,nbTime,clusterAffectation1,nbClusters,trajMean);
        affecteIndiv(traj,nbInd,nbTime,trajMean,nbClusters,clusterAffectation2);

        i = 0;
        while(clusterAffectation1[i]==clusterAffectation2[i] && i 
<*nbInd){i++;}; // lines 183
        if(i == *nbInd){
            *convergenceTime = iter + 1;
            break;
        }else{};

        calculMean(traj,nbInd,nbTime,clusterAffectation2,nbClusters,trajMean);
        affecteIndiv(traj,nbInd,nbTime,trajMean,nbClusters,clusterAffectation1);

        i = 0;
        while(clusterAffectation1[i]==clusterAffectation2[i] && 
i<*nbInd){i++;}; // lines 198
        if(i == *nbInd){
            *convergenceTime = iter + 2;
            break;
        }else{};
    }
}
--- 8< ----------------

Do you know what is wrong in my C code?
Thanks

Christophe

--
Christophe Genolini
Maître de conférences en bio-statistique
Université Paris Ouest Nanterre La Défense
INSERM UMR 1027

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to