std::vector et espace mémoire
Bonjour,
j'ai un code en C++ qui appelle du fortran. Le prototype de ma fonction fortran est :
Code:
1 2
|
void maFonctionFortran(double *, int * n) |
donc, via le C++, je fais
Code:
1 2 3
|
int size = x.size();
maFonctionFortran(&x[0], &size); |
où x est un std::vector. Je n'ai encore jamais eu de soucis avec cette syntaxe.
Un collègue m'a dit que ce n'était pas bon car rien ne garantit que les éléments sont contigus en mémoire avec un std::vector. Tout ce que la norme garantit est un accès direct au ieme élément et que les protoypes des fonctions seront conservés (entre 2 compilo par exemple).
A-t-il raison ? J'étais persuadé que les éléments d'un std::vector étaient contigus en mémoire.
Merci d'avance de votre réponse.