Malloc se bloquea, pero funciona en otro lugar

Me pregunto si alguien podría tener alguna idea sobre esto ...

Mi programa se bloquea en esta llamada:

void subtract(data* array,data* inverse,int a, int b, int q, int n)
{

data* arraytomultiply;
arraytomultiply = (data *)malloc(sizeof(data*) * n);

Donde los datos solo contienen un int (es por conveniencia cuando se cambian los tipos más tarde)

typedef struct { 
        int value;
}data;

He intentado mucho jugar con cambiar los punteros aquí, ya que no estoy seguro de ellos en absoluto, pero fue en vano.

Lo extraño es que, mucho antes en el programa, esta misma llamada funciona, le asigno valores y puedo imprimirlos y todo ...:

data* array;
array = (data*)malloc(sizeof(data*) * m * n); // m * n entries

Una cosa que podría ser útil (aunque no tengo idea de por qué) es que cuando funciona antes es durante una función nula, mientras que cuando falla se encuentra en una función llamada desde un algoritmo. pero no veo cómo esto podría afectarlo en absoluto, dado que lo que estoy tratando de hacer es no usar ninguno de los argumentos, et

¿Algunas ideas

Respuestas a la pregunta(8)

Su respuesta a la pregunta