Bonjour!
Voila j'ai ecris ce programme pour tester une petite chose :
Je compile de la maniere suivante :
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; }
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 icpc main.o -o main
En clair, il plante sur le substring alors qu'il ne me semble pas y avoir de raison particuliere...
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
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!
Partager