假如我们需要4个int的内存空间,使用malloc从堆上申请,一般写法如下,
int *p = malloc(4 * sizeof(int));
假如代码需要修改,改为分配4个unsigned char,就需要改为如下,
unsigned char *p = malloc(4 * sizeof(unsigned char));
可以看到需要改2个地方,很有可能会忘记修改第二处。
这里介绍一个方便的方法,如下,
int *p = malloc(4 * sizeof(*p));
unsigned char *p = malloc(4 * sizeof(*p));
这样在调用sizeof()时就不需要考虑变量的实际类型了,只要变量名不变就没有问题。