2010-10-18 4 views
0

Cette publication est éditée et le post original ici demande l'implémentation de _malloc_r, ce qui n'est pas une bonne idée.Autre implémentation de malloc

Ma question est maintenant là une autre implémentation de malloc ou une autre fonction pour les fonctions malloc et libres?

Veuillez nous consulter.

Merci beaucoup.

+0

Peut-être, vous devriez juste allouer de la mémoire * à l'avance *, avant d'entrer des gestionnaires de signaux? –

Répondre

2

Renoncer à essayer d'avoir un malloc réentrant. C'est une mauvaise idée. Si vous avez vraiment besoin d'allouer de la mémoire à partir des gestionnaires de signal, utilisez mmap, mais même si c'est un mauvais design.

+0

Juste un, y a-t-il d'autres implémentations de malloc? ou une fonction alternative pour les fonctions malloc et libres? – domlao

+0

Remplacer 'malloc' (ou toute autre partie de la bibliothèque C) entraîne un comportement non défini *. Sur une implémentation donnée (par exemple Linux/glibc) il y a probablement un moyen de le faire, mais s'assurer que le remplacement n'est pas bogué et qu'il ne casse pas d'autres parties de la bibliothèque standard ou d'autres bibliothèques que vous voudrez utiliser est hautement non trivial, et bien sûr, même si vous savez que cela fonctionne maintenant, ce n'est pas une garantie que les choses ne se briseront pas dans les versions futures. –

2

Il existe de nombreuses autres implémentations de malloc, généralement destinées au débogage ou à d'autres fins spéciales. Un que vous voudrez peut-être jeter un coup d'œil à tcmalloc de Google.