Usar random_shuffle causa SIGSEGV o SIGBUS

Esta llamada en Android NDK

random_shuffle(node->elements.front(), node->elements.back());

provoca un SIGBUS o SIGSEGV. Estoy usando gnustl (compartido/estático no hace ninguna diferencia). Además, no puedo cambiar las bibliotecas stl porque necesito soporte de excepción. Hasta ahora, todas las demás funciones de stl funcionan perfectamente.

preguntado el 31 de julio de 12 a las 15:07

1 Respuestas

Utilice las node->elements.begin() y node->elements.end().

front() y back() devolver elementos, no iteradores. supongo que node->elements es una colección de punteros; en ese caso, random_shuffle intentará aleatorizar lo que haya en la memoria entre la dirección del primer elemento y la dirección del último elemento. Esto no es lo que quieres.

Respondido 31 Jul 12, 15:07

@ user829996, si resolvió su problema, considere hacer clic en la marca de verificación además de esta respuesta. Dice que su pregunta ha sido respondida. - znomak

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.