The C and C ++ compilers implement several sizes of integers (usually 1, 2, 4, and 8 bytes {8, 16, 32, and 64 bits}), but without any auxiliary code for the preliminary arithmetic operation, you cannot arbitrary size integers numbers.
Statements you made:
int *ptr;
ptr = (int *)malloc(10);
, , . , , , (10 % sizeof(int) ) == 0), , .
, ++, , 10- (80 ) . C , .
sizeof(ptr) 4, 4- (32- ). sizeof , . , , - sizeof , . , .