Salut,
J'ai un petit pb d'allocation avec le new à partir d'une certaines taille que ne me parrait pas énorme.
retMetaData->ptViews = new CmcMetaViewStruct[iViewCount];
Jusqu'ici aucun pb (ca fonctionne depuis un an sans bug) mais j'ai récement un plantage de l'application apparement su le nombre de vue est > que 600 .
- le pointeur retMetaData est bien valide
- sizeof CmcMetaViewStruct = 52 , iViewCount = 652 soit 33904octets
- la déclaration des structures est la suivante :
CmcMetaDataStruct *retMetaData;
struct CmcMetaViewStruct // Défintion d'une vue
{
unsigned char psName[29]; // Nom de la vue
unsigned char psIconName[12]; // Nom de l'icone
unsigned int iCategoryId; // Index de la table concernée
unsigned char iTypeId; // Type de la vue
unsigned char iTagId; // Tags de la vue
bool bEnabled; // Validité de la vue
};
struct CmcMetaDataStruct // Définition des métadatas
{
CmcMetaTableStruct *ptTables; // Liste des tables
CmcMetaLinkStruct *ptLinks; // Liste des liens
CmcMetaViewStruct *ptViews; // Liste des vues
unsigned int iLogicalTableCount; // Nombre de table logique
unsigned int iPhysicalTableCount; // Nombre de table physique
unsigned int iLogicalLinkCount; // Nombre de lien logique
unsigned int iPhysicalLinkCount; // Nombre de lien physique
unsigned int iLogicalViewCount; // Nombre de vue logique
unsigned int iPhysicalViewCount; // Nombre de vue physique
};
J'ai essayé d'allouer avec HeapAlloc et ca fonctionne :
retMetaData->ptViews
= (CmcMetaViewStruct *)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY, sizeof CmcMetaViewStruct * iViewCount);
Kelkun a une idée ??