使用malloc分配内存并找到strlen()

0 c malloc pointers strlen

int main(){
    char *ptr = (char*)malloc(10);
    printf("%d",strlen(ptr));
}
Run Code Online (Sandbox Code Playgroud)

输出是11.我不知道为什么会这样?

Ned*_*der 7

您尚未向malloc的块中写入任何数据.它有旧的字节,没有办法知道它包含什么. strlen只需查找下一个零字节.我猜你找到了一个11字节,但它可能已经有数千字节了.

您正在查看未定义的行为.