OVH Cloud OVH Cloud

Contigüité memoire ?

43 réponses
Avatar
May
Bonjour,

J'utilise une classe de base tres simple :

struct donne
{
double Int;
double Ext;
double IntExt;
}

puis un tableau aloué statiquement pour le moment

donne Tab[1024];

Ma question est assez simple, dans quel ordre en memoire, sont les données ?
Est-ce que je peux faire un truc du genre :

double *ptr=&Tab[0].Int;
for (int i=0;i<256;i++,ptr+=3)
{
*ptr=1.0;
}

Afin d'initialiser tous les champ Int de toutes les classes du tableau ?
Et si oui est-ce que ca reste valable si je fait un tableau dynamique à la C
(new/delete) ? ou avec std::vector<donne> ?

Merci
May

3 réponses

1 2 3 4 5
Avatar
Samuel Krempp
le Wednesday 24 September 2003 21:26, écrivit :
donc tu dois connaître Samy, je suppose.


nan. Enfin, pas que je sache en tout cas.. j'suis probablement plus ancien.
(d'ailleurs il serait temps que je finisse ma thèse, un jour. pour
commencer je devrais arrêter de bavarder dans fcl.c++ ..)

--
Sam

Avatar
Jacti

Bonjour,

J'utilise une classe de base tres simple :

struct donne
{
double Int;
double Ext;
double IntExt;
}

puis un tableau aloué statiquement pour le moment

donne Tab[1024];

Ma question est assez simple, dans quel ordre en memoire, sont les données ?
Est-ce que je peux faire un truc du genre :

double *ptr=&Tab[0].Int;
for (int i=0;i<256;i++,ptr+=3)
{
*ptr=1.0;
}

Afin d'initialiser tous les champ Int de toutes les classes du tableau ?
Et si oui est-ce que ca reste valable si je fait un tableau dynamique à la C
(new/delete) ? ou avec std::vector<donne> ?


C'est toujours très dangereux, dans quelque langage que ce soit, de supposer
la façon dont les données sont allouées sauf quand la norme est explicite.
En clair c'est de la mauvaise programmation.

Jacti

Avatar
May
"Jacti" a écrit dans le message de
news:



Bonjour,

J'utilise une classe de base tres simple :

struct donne
{
double Int;
double Ext;
double IntExt;
}

puis un tableau aloué statiquement pour le moment

donne Tab[1024];

Ma question est assez simple, dans quel ordre en memoire, sont les
données ?


Est-ce que je peux faire un truc du genre :

double *ptr=&Tab[0].Int;
for (int i=0;i<256;i++,ptr+=3)
{
*ptr=1.0;
}

Afin d'initialiser tous les champ Int de toutes les classes du tableau ?
Et si oui est-ce que ca reste valable si je fait un tableau dynamique à
la C


(new/delete) ? ou avec std::vector<donne> ?


C'est toujours très dangereux, dans quelque langage que ce soit, de
supposer

la façon dont les données sont allouées sauf quand la norme est explicite.
En clair c'est de la mauvaise programmation.

Jacti


C'est pour cela que je demandais ce que dit la norme sur ce probleme ...

May


1 2 3 4 5