starbluesky
Messages postés7Date d'inscriptionmardi 27 janvier 2009StatutMembreDernière intervention18 février 2009
-
17 févr. 2009 à 23:35
starbluesky
Messages postés7Date d'inscriptionmardi 27 janvier 2009StatutMembreDernière intervention18 février 2009
-
18 févr. 2009 à 20:47
Salut
Pouvez vous me dire comment utilisez la memoire virtuelle pour allouez d'espace pour une matrice de taille 250000 * 500 ?
j'ai utilise dans mon programme la fonction
matrix=(int**) malloc (sizeof (int*) * vertices * vertices);
mais il me parait qu'il est limite a 100000 * 100000
J'utilise le Visual Basic 2008 sous Windows Vista Ultimate 32 bit
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 févr. 2009 à 20:30
Ne cherche surtout pas à faire un tableau de pointeurs qu'il faudra ensuite allouer.
La taille maxi que tu peux demander est de 2 Go (en fait le total dispo pour ton processus dans l'espace USER) sur system32, 3 Go sur serveurs si le flag /3 est positionné au boot.
#define MEMDISPO (MEM_COMMIT | MEM_RESERVE)
DWORD v = ... // TON CALCUL ICI DE LA TAILLE TOTALE DONT TU AS BESOIN
pINTS = (int*) VirtualAlloc(0, V, MEMDISPO, PAGE_READWRITE);
if(!pINTS) goto errALLOC; // ERREUR ALLOC
// UTILSATION ICI DE pINTS
// ENSUITE LIBERATION
VirtualFree(pINTS, 0, MEM_RELEASE);
On peut expliquer au compilo d'utiliser le tableau comme on veut.
// SIZEPERSO à toi de voir ce qui convient....
double (*pi2d)[2] = (double (*)[SIZEPERSO]) pINTS; // VOIR 1 dim EN 2 dim par compilo
Now j'utilise pi2d en tableau 2 dimensions:
pi2d[0][0] = 12;
pi2d[0][1] = 8;
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 févr. 2009 à 10:49
"J'utilise le Visual Basic 2008 ... Language C"
moi j'ai une moto rouge qui est blanche... et c'est pas évident à trouver.
Allons un peu de sérieux dans les questions comme dans le titre, on n'est pas à la maternelle.
Mais il me parait qu'il est limite a 100000 * 100000
J'utilise le Microsoft Visual C++ 2008 Express Edition sous Windows Vista 32
bit.
Mon programme est écrit en langage C.
Concernant votre question SebLinck. J’utilise cette matrice pour générer
l'ensemble de voisinage d'une solution donnée. Pour être plus claire. Supposez
que vous avez une séquence 1-2-3-4-5 a partir de cette séquence. En utilisons le déplacement pour générer des
solutions voisines on obtiendra 16 solutions voisines. En règle générale a
partir de n on obtient n*(n-2)+1.
Donc j’ai une séquence
de taille n=500. Donc, dans ce cas ma matrice est de taille 249001*500.
Voici un exemple :
1-2-3-4-5
2-1-3-4-5
2-3-1-4-5
2-3-4-1-5
……
Il y a 16 solutions possibles à générer.
Merci d'avance;
Vous n’avez pas trouvé la réponse que vous recherchez ?