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:

    “I can barely conceive of a type of beauty in which there is no Melancholy.”
    —Charles Baudelaire (1821–1867)

    “Firm, united, let us be,
    Rallying round our Liberty;
    As a band of brothers joined,
    Peace and safety we shall find.”
    —Joseph Hopkinson (1770–1842)