Accueil > Forum > > > > Problème de gestion de la memoire - stockage de données 3D lues dans un fichier
Problème de gestion de la memoire - stockage de données 3D lues dans un fichier
lundi 26 octobre 2009 à 22:08:06 |
Problème de gestion de la memoire - stockage de données 3D lues dans un fichier

serialtom
|
Bonjour à tous,
je vous contacte car j'ai un gros problème de gestion de la mémoire. voici mon contexte. j'ai implémenté une application qui sert a visualiser en 3D des points, courbes et surfaces. pour cela j'ai créé une classe parser, une classe static container (avec en données mebre static listepoints,listecourbes & listesurfaces), et une classe viewer. j'ai aussi des classes d'objets geometriques comme point (avec en donnée membre nom, X, Y, Z).
j'ai un fichier contenant 8700 points environs. en construisant ma liste de points je remplis deja presque 600Mo de Memoire !
avez vous une piste pour commencer à creuser ce soucis ???
dites moi de quelle partie du code vous avez besoin pour identifier le pb.
merci encore pour votre aide.
bonne soiree
|
|
lundi 26 octobre 2009 à 23:43:50 |
Re : Problème de gestion de la memoire - stockage de données 3D lues dans un fichier

CptPingu
|
Effectivement, sans code, ça va être dur de t'aider.
Néanmoins, pour avoir 600Mo de mémoire prise, c'est que tu fais forcément de la duplication en mémoire.
- Vérifie que lorsque tu passes des arguments, tu les passes par références et non par copie
- Vérifie que tu ne fais pas de concaténation de std::string, mais que tu utilises bien un stringstream.
- Utilise le partage de mémoire pour des objets similaires (voir design pattern flyweight)
Si ton application n'est pas trop grosse, je serais curieux de voir les classes conteneurs, et les méthodes qui les manipulent.
|
|
mercredi 28 octobre 2009 à 11:35:56 |
Re : Problème de gestion de la memoire - stockage de données 3D lues dans un fichier

serialtom
|
Ok je vais verifier tes premieres pistes.
je t'envoie les source incrimines des que je peux.
merci pour ton aide
|
|
jeudi 29 octobre 2009 à 19:02:11 |
Re : Problème de gestion de la memoire - stockage de données 3D lues dans un fichier

serialtom
|
voici ma classe conteneur :
#include "SOFGeometryContainer.h"
std::vector <SOF3DControlPoint> SOFGeometryContainer::_ListOfControlPoints;
SOF3DBoundingBox SOFGeometryContainer::_ContainerBoundaries;
std::vector <SOF3DNURBSCurve> SOFGeometryContainer::_ListOfCurves;
std::vector <SOF3DNURBSSurface> SOFGeometryContainer::_ListOfSurfaces;
bool SOFGeometryContainer::_IsContainerDirty;
SOFGeometryContainer::SOFGeometryContainer(void)
{
_IsContainerDirty = false;
}
SOFGeometryContainer::~SOFGeometryContainer(void)
{
_ListOfControlPoints.clear();
}
int SOFGeometryContainer::Add3DControlPoint(const SOFString &iCPName, const double & iCPx, const double & iCPy,const double & iCPz)
{
SOF3DControlPoint CP;
CP.SetName(iCPName);
CP.SetX(iCPx);
CP.SetY(iCPy);
CP.SetZ(iCPz);
_ListOfControlPoints.push_back(CP);
_ContainerBoundaries.UpdateBoxWithPosition(iCPx,iCPy,iCPz);
_IsContainerDirty = true;
return 0;
}
int SOFGeometryContainer::Add3DNURBSCurve(SOF3DNURBSCurve iCurve)
{
_ListOfCurves.push_back(iCurve);
return 0;
}
int SOFGeometryContainer::Add3DNURBSSurface(SOF3DNURBSSurface iSurface)
{
_ListOfSurfaces.push_back(iSurface);
return 0;
}
int SOFGeometryContainer::GetContainerBoundaries(SOF3DBoundingBox &oContainerBoundaries)
{
oContainerBoundaries = _ContainerBoundaries;
return 0;
}
int SOFGeometryContainer::Get3DControlPoints(std::vector <SOF3DControlPoint> *&opListOfControlPoints)
{
if(_ListOfControlPoints.size()>0)
opListOfControlPoints = &_ListOfControlPoints;
else
opListOfControlPoints = NULL;
return 0;
}
int SOFGeometryContainer::Get3DCurves(std::vector <SOF3DNURBSCurve> *&opListOfCurves)
{
if(_ListOfCurves.size()>0)
opListOfCurves = &_ListOfCurves;
else
opListOfCurves = NULL;
return 0;
}
int SOFGeometryContainer::Get3DSurfaces(std::vector <SOF3DNURBSSurface> *&opListOfSurfaces)
{
if(_ListOfSurfaces.size()>0)
opListOfSurfaces = &_ListOfSurfaces;
else
opListOfSurfaces = NULL;
return 0;
}
int SOFGeometryContainer::Find3DControlPointFromName(const SOFString iName, SOF3DControlPoint *& o3DControlPoint)
{
if(true==iName.IsEmpty())return -1;
o3DControlPoint = NULL;
for(unsigned int i=0;i<_ListOfControlPoints.size();i++)
{
SOFString CurrentName;
int rc = _ListOfControlPoints.at(i).GetName(CurrentName);
if(0!=rc)return rc;
SOFString InputName = iName;
if(0<InputName.Find(CurrentName)||0<CurrentName.Find(InputName))
{
o3DControlPoint = &_ListOfControlPoints.at(i);
break;
}
}
if(NULL==o3DControlPoint)return 1;
return 0;
}
bool SOFGeometryContainer::HasContainerBeenModified()
{
if(_IsContainerDirty)
{
_IsContainerDirty = false;
return true;
}
else return false;
}
void SOFGeometryContainer::Release()
{
_ListOfControlPoints.clear();
_ListOfCurves.clear();
_ListOfSurfaces.clear();
}
je remplis les infos dans mon parser comme suit
les points (8700 fois ca) :
ListOfSubStrings = LineString.Split(SOFString(','));
if(ListOfSubStrings.size()>1)
{
if(ListOfSubStrings.at(0)==SOFString("CARTESIAN_POINT"))
{
if(ListOfSubStrings.size()==5)
{
if(ListOfSubStrings.at(1)==SOFString("'Control Point'"))
{
//Positions 3,4 & 5 are the coordinates
int rc = SOFGeometryContainer::Add3DControlPoint(STemp,
ListOfSubStrings.at(2).ToDouble(),
ListOfSubStrings.at(3).ToDouble(),
ListOfSubStrings.at(4).ToDouble());
}
}
}
ensuite dans le redraw de ma scene je recuere la liste des controls points mais sur mon modele la memoire est deja pleine avant .....
desolé pour le delai ...
merci de ton aide
|
|
Cette discussion est classée dans : problème, données, gestion, 3d, memoire
Répondre à ce message
Sujets en rapport avec ce message
gestion d'une base de données MySQL en C [ par titeuf21121 ]
Salut tout le monde,alors, v'là mon problème:Je souhaite gérer une base de données MySQl avec un programme en C.J'utilise la librairie libmysql.J'arri
gros problème base de données [ par skysee ]
Salut,j'ai un gros problème avec mase de données.J'utillise le composant ATL pour me connecter à ma base de données.Donc il mes génère 2 classes dont
OpenGL gestion memoire [ par xarier ]
SVP j'ai prob que je ne c pas comment le geré c que quand j'ouvre mon pojet sous vc++plusieur fois mon pc n'a plus de resources libre je crois que c p
Memoire partagée de DLL PERDUE [ par vlacnog ]
Bonjour,voici mon problème.Je développe une DLL dans laquelle je crée un fichier mappé en mémoire (via CreatFileMapping et MapViewOfFile).De plus, la
Moteur 3D, gestion des collisions [ par fabienGL ]
Bonjour, je vous écris car j'ai 2 question :1)OpenGL c'est une librairies graphiques, pourtant entends-t-on parler de moteurs 3D j'aurais aimé savoir
Gestion d'appartements [ par ScorpionTiti ]
Salut à tous!Merci pour toutes vos suggestions. Vous m'avez bien aidé.Cependant, je vais être encore chiant. Je dois établir une gestion de dix appar
Problème de gestion multilangue... [ par liv ]
Bonjour à tous,J'ai un programme en VC++ .NET avec les MFC qui inclue la gestion multilangue (pour le moment Français, Anglais) s'appuyant sur l'intég
[visual C++] problème (très bizarre) avec un CString [ par drinkmilk ]
Bonjour, je fait une requête sur une base access. Je récupère les données ainsi: <T
Problème de mise à jour de ma base de données [ par lam_insat ]
Mon application consiste une application multi-tierd.Le probléme est que les modifications que fait un client ne parviennent pas à un deuxieme que lor
gestion des fenetres (opngl/glut) [ par PIEDPIED13 ]
bonjour.Je fais un programme en c avec opnGL et Glut.j'affiche une fenetre pour faire un rendu 3d et une autre où je veux représenter quelquechose en
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|