Compilatori C e C++

Buonasera volevo chiedervi gentilmente un chiarimento riguardo questo pezzo di codice che in C non da problemi e in C++ il compilatore da errore. Come mai?

    X = malloc(N * sizeof(int));
    P = malloc(N * sizeof(int));
    S = malloc(N * sizeof(int));

L’errore in questione è "invalid conversion from ‘void*’ to ‘int*’ ". X, P e S sono dichiarate con int *X, *P, *S.

Ciao,
penso che il problema sia dato dal fatto che in C++ la conversione da void* a int* non sia automatica ma debba essere fatto un casting manuale.
Teoricamente questo dovrebbe essere il codice:

int *X, *P,*S;
X = (int*)malloc(N * sizeof(int));
P = (int*)malloc(N * sizeof(int));
S = (int*)malloc(N * sizeof(int));

Va bene, grazie mille ora va.