使用strlen函数时出现意外输出

时间:2015-03-13 10:16:21

标签: pointers sizeof calloc

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char *p;
    p=calloc(10,sizeof(char));
    printf("the address of pointer is %p and size of the string is %d",p,strlen(p));
    return 0;
}

我使用calloc在堆中分配了10个字节的内存,我希望size的输出为10,但输出为

the address of pointer is 0x123e010 and size of the string  is 0

为什么大小为0而不是10

1 个答案:

答案 0 :(得分:1)

strlen只计算其值不是0x00的字节数(也称为NULL,C标准用于字符串终结符。)

由于calloc在分配后将内存初始化为0x00strlen会返回0,因为第一个字节已经是NULL