Error: tipos incompatibles al asignar “valores” de tipo de “void * ‘?

Recibo este error cuando estoy tratando de hacer algo de memoria para mi estructura de datos.

typedef struct _values { random ints; } values; 

He intentado las líneas de abajo pero a mi comstackdor no le gusta. ¿Cómo soluciono el error?

 values v; v = malloc(sizeof(values)); 

Olvidó agregar el asterisco (*) después de los values y antes de v para marcarlo como un puntero: values *v;

De la forma en que lo configura ahora, la v (sin el asterisco) se define como una variable de stack y se asignará en la stack y se descartará una vez que la función finalice. Su tipo será simplemente values . malloc se utiliza para asignar memoria en el montón y devuelve un puntero a la memoria. Sin embargo, la función no tiene forma de saber el tipo que lo devuelve como un tipo void * – Lo que le da su error – está intentando asignar un tipo void * a un tipo struct , que el comstackdor no puede hacer, ni puede El comstackdor encuentra un reparto legítimo que podría resolver el problema.

No necesitas memoria malloc en este caso; los values v; línea values v; Ya asignó la memoria (“en la stack”). Se liberará automáticamente cuando abandone el ámbito actual.

Si realmente quería asignar la memoria “en el montón”, para que persista más allá del scope actual, necesita que v sea ​​un puntero; es decir:

 values *v; v = malloc(sizeof(values)); 

Recuerda free cuando hayas terminado.

values v;

esta es una instancia de la estructura que está asignada en la stack.

v = malloc(sizeof(values));

malloc devuelve un puntero void* y el comstackdor no le permitirá asignar un puntero a una instancia.

debe declarar un puntero y, a continuación, asignarle el puntero de retorno malloc.

algo por el estilo

valores * v = NULL;

 v = malloc(sizeof(values));