下面这段代码主要用到了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