tu as des warning a la compilation? (active un niveau de warning plus eleve) Tu as d'autres erreurs memoires qui apparaissent dans ton execution?
(nevermind)
tu as un probleme d'arithmetique de pointeur. tu utilise i comme etant un offset memoire, mais tu utilise l'operateur + sur un pointeur vers non-void, qui utilise une semantique avec stride.
C'est ce qui arrive quand on passe de notation poineur aux notation tableau. Sauf si tu as vraiment besoin de pointeur, il n'y a pas de bonne raison de ne pas utiliser de notation tableau.
Voir meme dans un cas comme ca, je n'ai pas l'impression qu'il y a une utilite a ne pas utiliser std::vector avec un boost::aligned_allocator. En particulier ca permet de swapper the std::vector pour un autre type qui fait du bound checking pour identifier les out of bound access.