C++字符串某个位置置为空字符后

    time[strlen(time) - 1] = '\0';
    printf("%ld\n", strlen(time));

将一个字符串的某一个位置置为空字符后,理论上空字符后的位置已经不算该字符串占据的空间了,那么新分配内存的时候是否会将那部分剩余的内存给分配走呢?还是只有等到这个字符串变量销毁后那片内存才会被占据?

strlen与空字符无关的啊

sizeof是用来测试占据空间的,strlen是用来测试结束符位置的
这俩没有关系呀
比如char c[100]={0};
虽然第一位就是个空字符,这是个空字符串,但是它依然占据了100的空间
它什么时候释放要看变量的生命周期,函数结束了自然会释放
而如果定义成char *c=malloc(100);
那么即使生命周期结束了它依然不会释放,必须执行free(c)才会释放