Bueno, .... no entendí exactamente lo que quieres indicar con el mensaje, pero me imagino (porque también he trabajado con eso y me ha dado dolores de cabeza) que el problema puede estar efectivamente en la asignación de memoria para
probes.
No se cómo lo estás haciendo pero si por ejemplo el
probes debe ser un array de digamos 10 cadenas, cada una con capacidad para 50 caracteres (más el nulo de terminación), hay que hacer:
probes = (char **) malloc( 10 * sizeof (char *) );
if ( probes == NULL ) return; /* comprueba integridad */
for ( i = 0; i < 10; i++ ) {
probes[i] = (char *) malloc( 51 * sizeof(char) );
if ( probes[i] == NULL ) return;
}
Es decir, reservas espacio en
probes para 10 strings, o sea, 10 punteros a char. Es bueno siempre verificar si
malloc pudo asignar efectivamente memoria, probando si el puntero devuelto es distinto a NULL. De lo contrario, la asignación fue fallida y debes salir o reiniciar el programa. [de otro modo se puede producir una "fuga de memoria" y ya empezarás a parecerte a los programadores de Microsoft, jeje
]
Luego, en cada elemento del array
probes debes colocar un puntero (devuelto por malloc) a una zona de memoria con espacio para 51 elementos de tipo char, es decir, una cadena con espacio para 50 caracteres más el nulo de terminación (no se te olvide el espacio para el nulo). De nuevo, verifica el retorno de malloc después de cada llamada a la misma.
Ahora sí puedes empezar a llenar el array
probes con cadenas con (en este caso) 10 cadenas de longitud 50 cada una. En tu caso, si por casualidad los elementos de
probes no estaban correctamente inicializados, y eran simplemente punteros NULL, esa es la razón por la que
sprintf no escribió nada en request !!