begin process at 2012 05 30 00:53:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Organisation de la mémoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Organisation de la mémoire

mercredi 7 janvier 2009 à 17:13:23 | Organisation de la mémoire

KurpeusLondon

Désolé une petite question de plus pour la forme:)

Je comprends pas comment est organisé la mémoire lors d'un malloc et compagnie : je m'explique.

J'ai crée une structure qui contient exclusivement des pointeurs vers une sous structure; cette super structure est nommée sTop :

struct sTop{
    struct sData * u12Main;
    struct sData * u23Main;
    struct sData * u31Main;
    struct sData * v1Main;
    struct sData * v2Main;
    struct sData * v3Main;
    struct sData * freqMain;
    struct sData * u12Gen;
    struct sData * u23Gen;
    struct sData * u31Gen;
    struct sData * v1Gen;
    struct sData * v2Gen;
    struct sData * v3Gen;
    struct sData * freqGen;
};

J'alloue de la mémoire a cette structure comme suit :

struct sTop * pTop = (struct sTop * ) malloc (sizeof (struct sTop ));

Lorsque j'utilise printf pour savoir la taille de ma structure, Il me renvoit 56 ce qui corresponds à 4*14 , mon nombre de pointeurs de 4 bytes. Jusque la rien d'anormale

J'ai un pointeur pNextStruct que j'ai initialisé au début de ma structure :
struct sData * pNextStruct = NULL;

pNextStruct = pTop;

Mais voila le problem, quand j'essaye de parcourir les éléments de ma super structure, moi pointeur fait des pas trop grand :

pNextStruct++;

Il passe de 0x00343440 à 0x00343454 alors que pour moi il aurait du aller à 0x00343444.

Pour info voici la soustructure auquel les pointeurs de ma superStructure pointent.

struct sData{
    char * label;
    char * value;
    char frame[9];
}
struct sData * pSubStruct = (struct sData*) malloc( sizeof(struct sData ));

Ce pointeur pSubStruct est retourné par un fonction et chaque pointeur de ma super Structure récupere l'adresse pointée de celui ci.

Merci bien.
mercredi 7 janvier 2009 à 18:37:36 | Re : Organisation de la mémoire

BruNews

Administrateur CodeS-SourceS
Normal que passe de 0x00343440 à 0x00343454, donc 20 octets.

struct sData{
    char * label;
    char * value;
    char frame[9];
}
c'est bien la taille de cette structure, le compilo l'ayant traduit correctement en:
struct sData{
    char * label;
    char * value;
    char frame[12];
}
pour que tes pointeurs soient bien alignés sur 4.

ciao...
BruNews, MVP VC++
mercredi 7 janvier 2009 à 19:01:16 | Re : Organisation de la mémoire

KurpeusLondon

Ca veut dire qu'il prends en compte la taille de l'objet pointé ? Ok pour ça, c'est bon a savoir

Pourquoi alors ma structure sTop qui ne comprends que des pointeurs non initialisés s'étant sur 54 bytes c'est a dire quelque part en mémoire des pointeurs de 4 bytes qui se suivent à la queue leu leu (tiens je sais pas comment on écrit ça :p ?!? ) et quand je lui demande de faire une opération sur un même pointeur il prend en compte la structure pointé ?

Ais je quelque chose a faire avec le malloc de ma super structure ?
mercredi 7 janvier 2009 à 19:38:48 | Re : Organisation de la mémoire

BruNews

Administrateur CodeS-SourceS
56 bytes, normal aussi : 14 * 4 = 56.
Ils sont tous bien alignés sur 4.

Initialisés ou non n'entre pour rien dans l'affaire, chaque pointeur de la structure a sa place réservée l'un derrière l'autre en mémoire, quelle que soit la valeur (adresse mémoire) qui s'y trouve.

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : mémoire, stop, structure, struct, sdata


Répondre à ce message

Sujets en rapport avec ce message

libération de mémoire allouée [ par moloko2000 ] Je me trouve confronté à un petit problème d'allocation mémoire.En fait je dois rapatrier une base de données de 90000 enregistrements et en fait à ch Structure en mémoire attaquée [ par themaste ] Bonjour à tous!Voila, actuellement je travaille sur un vieux logiciel qui ait fais à 99% en C.Dans ce programme, il y a beaucoup de structure en mémoi Structure alignment [ par Gargagol ] Voilà je programme sous MS VC++J'ai la structure suivante:typedef struct{ unsigned short port; unsigned char showMessage; unsigned char hashMonitor[16 PILE & STRUCTURE [ par cyberice67 ] Bonjour, J'ai une bonne question spécial chauffage de neurones.... J'ai créé une structure de base appelée MesDonnees, qui contient mes données. Puis Taille d'une structure en mémoire [ par PeteTheBull ] Bonjour J'ai un petit problème en c++ (sous VC++6). Je défini une structure du style : typedef struct     {         __int64 B;       &nbsp Structure de données Arbre de Huffman [ par nicloss ] Bonjour, j'ai un projet en programmation c qui consiste à coder un programme qui compresse selon l'algorithme de Huffman. J'ai bien compris le princip desallocation de mémoire de structure..... [ par psyko_flex ] Je voudrais une petite aide sur la désallocation de la mémoire...voila je passe unen structure dans une fonction, regarder l exemple:( ma structure s Thread et mémoire dynamique. [ par jlingenierie ] Salut, j'essaye de réaliser une thread travaillant sur une struct placé en mémoire dynamique (un pointeur sur la struct est passé en paramètre à la th Définition de Structure [ par angelfire0808 ] Voila j'ai une petite question sur la definition des structure : struct liste         {         int valeur;     & structure [ par logant83 ] bonjoir, enfaite voila j'aimerai pouvoir exploiter une structure mais voila j'i arrive pas. struct connect_nick { //ma structure char pseudo[1000


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales