I'm wondering if there is a difference between sizeof(char) and sizeof(char *) :
char *s;
s = malloc(sizeof(char*)*len + 1);
char *s;
s = malloc(sizeof(char)*len + 1);
Is this the same ?
char
is a character and sizeof(char)
is defined to be 1. (N1570 6.5.3.4 The sizeof and _Alignof operators, paragraph 4)
char*
is a pointer to a character and sizeof(char*)
depends on the environment. It is typically 4 in 32-bit environment and 8 in 64-bit environment.
In typical environment where sizeof(char*) > sizeof(char)
, malloc(sizeof(char*)*len + 1)
will (at least try to) allocate more memory than malloc(sizeof(char)*len + 1)
if len
is small enough not to cause integer overflow.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With