下面这段代码主要用到了malloc(0),题目的关键考验你对malloc(0)是否有充分的理解,感觉有些变态。
#include<stdio.h>
#include<stdlib.h>
//malloc(0)函数 返回值不空
int main(int argc, char **argv)
{
char *pointer;
if((pointer = (char *)malloc(0)) == NULL)
{
printf("is null pointer\n");
printf("pointer:%p\n",pointer);
*pointer = 'a';
printf("%c\n",*pointer);
free(pointer);
}
else
{
printf("is valited pointer\n");
printf("pointer:%p\n",pointer);
*pointer = 'b';
printf("%c\n",*pointer);
free(pointer);
}
return 0;
}
malloc(0)返回堆上的任意一个字节的地址,并且返回的地址空间可以对其进行操作。
运行结果:
is valited pointer
pointer:0x7f23adff
b
