Je suis en train de mettre à jour un programme qui utilise des
structures contenant plusieurs tableaux de char. Il utilise par la
suite ces tableaux "comme s'ils se suivaient". C'est à dire comme si
le dernier caractère de premier tableau est immédiatement suivi en
mémoire par le premier caractère du second tableau.
Esce toujours vérifié ou non ? Sur mon IBM (unix) il semble que cela
soit correct mais je m'intérroge. Merci si vous avez des contres
exemples,
J'ai fait tourné ton prog et j'obtiens effectivement aussi 3. Je me demande donc si on peut "raisonnablement" supposer que c'est toujours le cas (lorsque la structure ne contient que des tableaux de char).
Si on cherche la portabilité totale, il ne faut pas compter dessus. Si on se contente d'un fonctionnement sur un nombre connu et limité de plateformes pour lesquelles on devra vérifier le fonctionnement au moins une fois, c'est acceptable.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', "Sebastien" <svinot@telecom.capgemini.fr> wrote:
J'ai fait tourné ton prog et j'obtiens effectivement aussi 3. Je me demande
donc si on peut "raisonnablement" supposer que c'est toujours le cas
(lorsque la structure ne contient que des tableaux de char).
Si on cherche la portabilité totale, il ne faut pas compter dessus. Si on se
contente d'un fonctionnement sur un nombre connu et limité de plateformes
pour lesquelles on devra vérifier le fonctionnement au moins une fois, c'est
acceptable.
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
J'ai fait tourné ton prog et j'obtiens effectivement aussi 3. Je me demande donc si on peut "raisonnablement" supposer que c'est toujours le cas (lorsque la structure ne contient que des tableaux de char).
Si on cherche la portabilité totale, il ne faut pas compter dessus. Si on se contente d'un fonctionnement sur un nombre connu et limité de plateformes pour lesquelles on devra vérifier le fonctionnement au moins une fois, c'est acceptable.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Erwan David
Emmanuel Delahaye écrivait :
Non. L'ordre des éléments est garanti dans une structure, mais 'en vrac', le compilateur/linker fait ce qu'il veut. J'ai connu des linkers qui plaçaient les gros objets d'abord, pour pouvoir glisser les plus petits dans les interstices.
On peut aussi avoir des stratégies d'allocations qui auront des zones différentes selon la taille des objets pour éviter la fragmentation mémoire.
Non. L'ordre des éléments est garanti dans une structure, mais 'en vrac', le
compilateur/linker fait ce qu'il veut. J'ai connu des linkers qui plaçaient
les gros objets d'abord, pour pouvoir glisser les plus petits dans les
interstices.
On peut aussi avoir des stratégies d'allocations qui auront des zones
différentes selon la taille des objets pour éviter la fragmentation
mémoire.
Non. L'ordre des éléments est garanti dans une structure, mais 'en vrac', le compilateur/linker fait ce qu'il veut. J'ai connu des linkers qui plaçaient les gros objets d'abord, pour pouvoir glisser les plus petits dans les interstices.
On peut aussi avoir des stratégies d'allocations qui auront des zones différentes selon la taille des objets pour éviter la fragmentation mémoire.
-- Monde de merde
Antoine Leca
Emmanuel Delahaye écrivit:
In 'fr.comp.lang.c', "Antoine Leca" wrote:
Je suis en train de mettre à jour un programme qui utilise des structures contenant plusieurs tableaux de char. Il utilise par la suite ces tableaux "comme s'ils se suivaient".
Si tu veux que cela marche, oublie les structures [couic]
Non.
Non quoi ? Ou non qui ?
L'ordre des éléments est garanti dans une structure, mais 'en vrac', le compilateur/linker fait ce qu'il veut.
Donc... oublier les structures.
Antoine
Emmanuel Delahaye écrivit:
In 'fr.comp.lang.c', "Antoine Leca" <root@localhost.gov> wrote:
Je suis en train de mettre à jour un programme qui utilise des
structures contenant plusieurs tableaux de char. Il utilise par la
suite ces tableaux "comme s'ils se suivaient".
Si tu veux que cela marche, oublie les structures
[couic]
Non.
Non quoi ? Ou non qui ?
L'ordre des éléments est garanti dans une structure, mais 'en
vrac', le compilateur/linker fait ce qu'il veut.
Je suis en train de mettre à jour un programme qui utilise des structures contenant plusieurs tableaux de char. Il utilise par la suite ces tableaux "comme s'ils se suivaient".
Si tu veux que cela marche, oublie les structures [couic]
Non.
Non quoi ? Ou non qui ?
L'ordre des éléments est garanti dans une structure, mais 'en vrac', le compilateur/linker fait ce qu'il veut.
Donc... oublier les structures.
Antoine
Antoine Leca
Stephane Legras-Decussy écrivit:
Si tu veux que cela marche, oublie les structures, et alloue les tableaux (de caractères, pas d'autre chose) les uns à la suite des autres. Ça, c'est garanti OK en C.
ah bon ?
tu as le passage de la norme qui dit ça ?
Oui, tout plein. 6.2.6.1p4 (propriétés de unsigned char[n]). Ou 6.5.6p8 (les tableaux n'ont pas de trous).
En me relisant, je m'aperçois qu'il y a une finesse qui vous a peut-être induit en erreur: à mon idée, l'allocation doit se faire en bloc, une fois pour toute, au début; ensuite, on "attaque" les différents tableaux de caractères au sein du gros morceau. Désolé si ce n'était pas clair au prime abord.
Antoine
Stephane Legras-Decussy écrivit:
Si tu veux que cela marche, oublie les structures, et alloue
les tableaux (de caractères, pas d'autre chose) les uns à la
suite des autres.
Ça, c'est garanti OK en C.
ah bon ?
tu as le passage de la norme qui dit ça ?
Oui, tout plein. 6.2.6.1p4 (propriétés de unsigned char[n]).
Ou 6.5.6p8 (les tableaux n'ont pas de trous).
En me relisant, je m'aperçois qu'il y a une finesse qui vous a
peut-être induit en erreur: à mon idée, l'allocation doit se faire
en bloc, une fois pour toute, au début; ensuite, on "attaque"
les différents tableaux de caractères au sein du gros morceau.
Désolé si ce n'était pas clair au prime abord.
Si tu veux que cela marche, oublie les structures, et alloue les tableaux (de caractères, pas d'autre chose) les uns à la suite des autres. Ça, c'est garanti OK en C.
ah bon ?
tu as le passage de la norme qui dit ça ?
Oui, tout plein. 6.2.6.1p4 (propriétés de unsigned char[n]). Ou 6.5.6p8 (les tableaux n'ont pas de trous).
En me relisant, je m'aperçois qu'il y a une finesse qui vous a peut-être induit en erreur: à mon idée, l'allocation doit se faire en bloc, une fois pour toute, au début; ensuite, on "attaque" les différents tableaux de caractères au sein du gros morceau. Désolé si ce n'était pas clair au prime abord.
Antoine
Stephane Legras-Decussy
"Antoine Leca" a écrit dans le message news: bh7v48$tft$
En me relisant, je m'aperçois qu'il y a une finesse qui vous a peut-être induit en erreur: à mon idée, l'allocation doit se faire en bloc, une fois pour toute, au début; ensuite, on "attaque" les différents tableaux de caractères au sein du gros morceau. Désolé si ce n'était pas clair au prime abord.
Ok ... :-)
"Antoine Leca" <root@localhost.gov> a écrit dans le message news:
bh7v48$tft$1@shakotay.alphanet.ch...
En me relisant, je m'aperçois qu'il y a une finesse qui vous a
peut-être induit en erreur: à mon idée, l'allocation doit se faire
en bloc, une fois pour toute, au début; ensuite, on "attaque"
les différents tableaux de caractères au sein du gros morceau.
Désolé si ce n'était pas clair au prime abord.
"Antoine Leca" a écrit dans le message news: bh7v48$tft$
En me relisant, je m'aperçois qu'il y a une finesse qui vous a peut-être induit en erreur: à mon idée, l'allocation doit se faire en bloc, une fois pour toute, au début; ensuite, on "attaque" les différents tableaux de caractères au sein du gros morceau. Désolé si ce n'était pas clair au prime abord.