Bonjour,
je débute en C++ et j'ai besoin d'obtenir de la memoire alignée sur les
limites de 16 octets.
(pour pouvoir utiliser les instructions sse2 type movaps sur x86, dans
des routines assembleurs)
Pour ce faire, je surcharge new et delete de cette facon :
using std::new_handler;
using std::set_new_handler;
using std::bad_alloc;
using std::abort;
using std::malloc;
using std::size_t;
La méthode "manuelle" pour obtenir de la mémoire alignée sur 16 octets
fonctionne. Par contre, la méthode utilisant posix_memalign segfault
invariablement.
Voici ce que me dit gdb :
#0 0x42076c9e in arena_get2 () from /lib/tls/libc.so.6
#1 0x4207373a in memalign () from /lib/tls/libc.so.6
#2 0x42075911 in posix_memalign () from /lib/tls/libc.so.6
#3 0x08111cea in operator new(unsigned) ()
Quand j'utilise posix_memalign dans du code C, je ne rencontre aucun
problème de ce type.
Je comprendrai que ce post soit limite HS mais quelqu'un ayant un peu
plus d'XP pourrait-il m'aider ?
Bien à vous,
Sébastien
__
Je suis à la recherche d'un premier emploi !
CV : http://wwwetu.utc.fr/~bigotseb/cv_sebastien_bigot_2005.pdf
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bernie
je débute en C++ et j'ai besoin d'obtenir de la memoire alignée sur les limites de 16 octets. Pour ce faire, je surcharge new et delete de cette facon :
La méthode "manuelle" pour obtenir de la mémoire alignée sur 16 octets fonctionne. Par contre, la méthode utilisant posix_memalign segfault invariablement.
Je ne repondrais que partiellement à ta question puisque je ne connais pas "posix_memalign" et donc je ne pourrais pas te donner de raisons potentielles au plantage observé lors de l'usage par le biais de la surcharge des opérateurs.
par contre, si tu veux du code portable pour allouer des zone correct pour le SIMD intel ou autre, il y a le code suivant. Pour ces 3 routines merci à Avery Lee(VirtualDub).
je débute en C++ et j'ai besoin d'obtenir de la memoire alignée sur les
limites de 16 octets.
Pour ce faire, je surcharge new et delete de cette facon :
La méthode "manuelle" pour obtenir de la mémoire alignée sur 16 octets
fonctionne. Par contre, la méthode utilisant posix_memalign segfault
invariablement.
Je ne repondrais que partiellement à ta question puisque je ne connais
pas "posix_memalign" et donc je ne pourrais pas te donner de raisons
potentielles au plantage observé lors de l'usage par le biais de la
surcharge des opérateurs.
par contre, si tu veux du code portable pour allouer des zone correct
pour le SIMD intel ou autre, il y a le code suivant. Pour ces 3 routines
merci à Avery Lee(VirtualDub).
je débute en C++ et j'ai besoin d'obtenir de la memoire alignée sur les limites de 16 octets. Pour ce faire, je surcharge new et delete de cette facon :
La méthode "manuelle" pour obtenir de la mémoire alignée sur 16 octets fonctionne. Par contre, la méthode utilisant posix_memalign segfault invariablement.
Je ne repondrais que partiellement à ta question puisque je ne connais pas "posix_memalign" et donc je ne pourrais pas te donner de raisons potentielles au plantage observé lors de l'usage par le biais de la surcharge des opérateurs.
par contre, si tu veux du code portable pour allouer des zone correct pour le SIMD intel ou autre, il y a le code suivant. Pour ces 3 routines merci à Avery Lee(VirtualDub).