Bonjour!

Voila j'ai ecris ce programme pour tester une petite chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
 
int main (int argc, char *argv[])
{
  std::string s = "abcdefghijklmnop" ;
 
  int size = s.size();
  printf ("taille de la chaine = %d\n", size) ; 
 
  printf ("test 1\n") ; fflush (stdout) ;
  std::string res (s, size - 4) ; 
  printf ("chaine resultante = %s\n", res.c_str()) ; 
 
 
  printf ("test 2\n") ; fflush (stdout) ;
  res  =  s.substr(size - 4) ; 
  printf ("chaine resultante = %s\n", res.c_str()) ; fflush (stdout) ;
 
 
  return EXIT_SUCCESS;
}
Je compile de la maniere suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
icpc main.o -o main
Et ensuite, le link :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
icpc main.o -o main
Pour une execution donnant ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
taille de la chaine = 16
test 1
chaine resultante = mnop
test 2
Erreur de segmentation
En clair, il plante sur le substring alors qu'il ne me semble pas y avoir de raison particuliere...
Avez vous une idee?

J'ai compile ici avec icpc mais je pense qu'avec g++, le comportement est le meme...
La machine sur laquelle je fais tourner ce programme est un itanium2 64bits.
Si je ne suis pas sur le bon forum, je m'en excuse!

Merci!