Très gros tableau et débugage.

Résolu
moumouteb
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
- 30 mars 2008 à 16:39
moumouteb
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
- 31 mars 2008 à 17:24
Bonjour.

Voila mon problème :
J'alloue dynamiquement un tableau en quatre dimensions qui peut contenir jusqu'à 500 million de "double". Dois-je prendre des dispositions particulières?
De plus je me pose cette question car quand je débug le programme avec VS 2007 lors de la fermeture du programme il faut que j'attende très longtemps avant qu'il ai fini de tout détruire, est-ce que cela arrivera aussi sans le débuger? Si oui que faut-il faire, si cela vient du débuger que puis-je faire?

Merci d'avance pour votre aide.

<hr size="2" width="100%" />Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.

6 réponses

BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
30 mars 2008 à 19:20
Si tu as des double en tableau, tu ne vas pas les mettre en ASCII er rconvertir à chaque fois. Tu écris direct en binaire et tu recharges aussi directement dispo pour calculs.

Une libération tableau (free() ou VirtualFree()) est instantané, sinon il y a un prob de conception dans ton prog.

ciao...
BruNews, MVP VC++
3
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
30 mars 2008 à 17:04
Tu es bien certain que ton alloc de 500 millions de double réussit ??? c'est presque 4 Go donc théoriquement impossible sur unWindows 32 bits.

ciao...
BruNews, MVP VC++
0
moumouteb
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
10
30 mars 2008 à 17:35
Pour le moment je n'ai tester qu'avec 1 000 000 mais ça me fait quand même les problèmes évoqués ci-dessu.
Et par contre à ce que je viens de comprendre j'aurais des problèmes avec des tableaux plus gros?

<hr width="100%" size="2" />
Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
30 mars 2008 à 17:44
Hors OS Server surlesquels on peut postionner le flag 3Go, un Windows client ne peut laisser plus de 2 Go de mémoire dans l'espace USER d'un processus. La moitié haute des 4 Go totaux de l'espace mémoire est réservée au kernel et tout ce qui peut interagir en Ring0.

Si tu dois traiter d'énormes masses de données, faut utiliser le disque dur comme intermédiaire. 

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moumouteb
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
10
30 mars 2008 à 19:09
Utiliser le disque dur c'est via un fichier temporaire? (type fichier texte) ou alors on peut allouer de la mémoire sur le disque? (type mémoire paginée)

Et sinon avec mes tableaux plus petits pourquoi ai-je ce problème en fin de débugage?

Merci.

<hr width="100%" size="2" />
Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.
0
moumouteb
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
10
31 mars 2008 à 17:24
Merci.

Pour le problème de débugage c'était bien que j'oubliais de désalouer la mémoire (et vu les quantités mise en jeu...).
Sinon pour le problème de taille j'ai remplacé les doubles par des entiers (je gagne le double de place donc) et j'ai limité la taille maximale.

<hr size="2" width="100%" />Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.
0