C Dynamic Memory Allocation - Type Safety

Type Safety

malloc returns a void pointer (void *), which indicates that it is a pointer to a region of unknown data type. The use of casting is only required in C++ due to the strong type system, whereas this is not the case in C. The lack of a specific pointer type returned from malloc is type-unsafe behaviour according to some programmers: malloc allocates based on byte count but not on type. This is different from the C++ new operator that returns a pointer whose type relies on the operand. (see C Type Safety).


One may "cast" (see type conversion) this pointer to a specific type:

int *ptr; ptr = malloc(10 * sizeof (*ptr)); /* without a cast */ ptr = (int *)malloc(10 * sizeof (*ptr)); /* with a cast */

There are advantages and disadvantages to performing such a cast.

Read more about this topic:  C Dynamic Memory Allocation

Famous quotes containing the words type and/or safety:

    Only that type of story deserves to be called moral that shows us that one has the power within oneself to act, out of the conviction that there is something better, even against one’s own inclination.
    Johann Wolfgang Von Goethe (1749–1832)

    There is no calamity which a great nation can invite which equals that which follows a supine submission to wrong and injustice and the consequent loss of national self-respect and honor, beneath which are shielded and defended a people’s safety and greatness.
    Grover Cleveland (1837–1908)