none
这是怎么回事 RRS feed

  • 问题

  • char* ptr;
    if((ptr=(char*)malloc(0))==NULL)
    put("get a null pointer");
    else
    puts("get a valid pointer");

    我的测试结果是: 尽管把0传给,但是ptr仍然是有地址的,不知道怎么解释??

    2007年8月7日 2:35

答案

  • 这是C语言对内存操作malloc的规定:malloc函数只有在内存申请失败的唯一条件成立时才可以返回NULL!在size为0的情况下至少要返回1个char(1byte),以表示malloc操作是一次成功的内存占有。

     

    2007年8月7日 3:04