Chapitre 6. Programmation en R
295
logiciels duma (http://duma.sourceforge.net) ainsi qu’electric-fence-win32
(http://code.google.com/p/electric-fence-win32), pourront s’av´ erer de
pr´ ecieux outils dans cette situation.
Linux
Sous Linux, on pourra utiliser les logiciels Valgrind ou
Electric Fence.
Voyons sur un exemple comment utiliser le logiciel Dr. Memory que vous
installerez dans le dossier C:\drmemory (choisir l’entr´ ee Add Dr. Memory to
the system PATH for all users lors de l’installation).
Le petit code suivant contient plusieurs erreurs, qui ne sont pas forc´ ement
faciles ` a d´ etecter pour un d´ ebutant. Vous pouvez le t´ el´ echarger `
a l’adresse
http://biostatisticien.eu/springeR/memoire.cpp.
1 extern "C" {
2
void testmemoire ( int * M , double * a) {
3
double * ptr1 , * ptr2 ;
4
int i;
5
ptr1 = new double [10000];
6
ptr2 = new double [M [0]];
7
ptr1 [0] = 1.0;
8
for (i =1; i <10000; i ++) {
9
ptr1 [i] = ( double )i;
10
ptr2 [i] = ptr1 [i -1] * ( double )i; }
11
delete [] ptr2 ;
12
for (i =0; i <10; i ++) a[i] = ptr2 [i ];
13
return ;
14
}
15 }
Commen¸ cez par fabriquer le fichier DLL associ´ e au moyen des instructions
suivantes tap´ ees dans une fenˆ etre de commandes Ms-Dos :
cd dossier o` u est le fichier memoire.cpp
g++ -o memoire.o -c memoire.cpp -g
g++ -shared -o memoire.dll memoire.o
Linux
Sous Linux, on utilise les instructions suivantes :
g++ -o memoire.o -c memoire.cpp -g -fPIC
g++ -shared -o memoire.so memoire.o
Précédent

- 328/701

Suivant