int x[8];
int *y;
y = (int *)malloc(sizeof(int)*8);
printf("x: %d\n", sizeof(x)/sizeof(int));
printf("y: %d\n", sizeof(y)/sizeof(int));

実行結果
x: 8
y: 1

配列はsizeofでサイズを取得できるけれど、ポインタ変数を代用するとできません。
変数yから確保した領域のサイズを取得することはできないのでしょうか?