Par coïncidence, le code semble échouer à la valeur exacte de la valeur max d'un court non signé.L'accès à l'opérateur de pointeur de l'itérateur à 65536 position provoque la segfault
map<int,vector<string> > backofflist;
for (int k = backofflist.size(); k > 0; k--) // for ($i=$#backofflist;$i>0;$i--)
{
vector<string>::iterator backofflist_iter;
int i = 0;
for (backofflist_iter=backofflist[k].begin();
backofflist_iter!=backofflist[k].end();
backofflist_iter++) // foreach $x (@($backofflist[$i]))
{
cout << i++ << endl;
string x;
try
{
x = *backofflist_iter; //foreach $x (@{$backofflist[$i]})
}
catch (exception &e)
{
cout << e.what() << endl;
exit(1);
}
produit la sortie suivante:
...
65532
65533
65534
65535
65536
{segfault}
Je pensais que les vecteurs ont une capacité illimitée? Y a-t-il quelque chose qui me manque? J'écris ce programme sur XCode dans Snow Leopard.
Vérifiez l'attribut max_size sur votre vecteur. – Whyrusleeping
Vous n'avez pas montré toute la boucle; Y a-t-il quoi que ce soit à l'intérieur qui ajoute ou supprime quelque chose de 'backofflist' ou' backofflist [k] '? –
Désolé, j'ai oublié de mentionner que le code échoue à: x = * backofflist_iter; – saigafreak