C语言面试题:与malloc(0)相关的问题,附答案和详解

疯狂一夏 分享于 6天前 1398阅 0人收藏此代码, 我要收藏

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


//该代码片段来自于: http://www.sharejs.com/codes/cpp/8720
malloc(0)返回堆上的任意一个字节的地址,并且返回的地址空间可以对其进行操作。
运行结果:
is valited pointer
pointer:0x7f23adff
b

标签:
  • 面试题
  • malloc
  • C语言