sizeof(char)和sizeof(char*)之间的区别

Fla*_*laz 3 c malloc sizeof

我想知道sizeof(char)和sizeof(char*)之间是否存在差异:

char *s;
s = malloc(sizeof(char*)*len + 1);

char *s;
s = malloc(sizeof(char)*len + 1);
Run Code Online (Sandbox Code Playgroud)

这是一样的吗?

Mik*_*CAT 12

char是一个字符,sizeof(char)定义为1.(N1570 6.5.3.4 sizeof和_Alignof运算符,第4段)

char*指向角色的指针,sizeof(char*)取决于环境.它通常在32位环境中为4,在64位环境中为8.

在典型的环境下sizeof(char*) > sizeof(char),malloc(sizeof(char*)*len + 1)将(至少尝试),比分配更多的内存malloc(sizeof(char)*len + 1),如果len是足够小,不会导致整数溢出.