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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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
Rejoignez-nous