C语言中给用malloc分配的空间赋NULL可能\0,会导致内存被释放掉吗

C语言中给用malloc分配的空间赋NULL或者\0,会导致内存被释放掉吗?

如题:

char * c= malloc(10); //这里声明一个指针并分配空间,这个时候里面应该是杂乱的数据
for(int i = 0;i<strlen(c),i++)
{
       c[i]='\n';  //c[i]=NULL;
}

VS2013中测试这个时候c的长度为0了,那么是不是等于这段空间被释放了?
因为后面往c里面存数据的时候(没有超过strlen(c))里面会出现乱码,
具体的说是前面几个字符是正确的,但是后面来会多出一些奇怪的字符。

------解决思路----------------------
C语言中给用malloc分配的空间赋NULL可能\0,会导致内存被释放掉吗  strlen()是检测字符串长度, 为0和内存释放没有任何关系,   malloc分配的内存, 必须显示的free 
------解决思路----------------------
char * c= malloc(10); //申请系统分配10byte内存空间
//没有memset
for(int i = 0;i<strlen(c),i++) //遍历循环strlen(c)长度次数
{
       c[i]='\n';  //c[i]=NULL;
}
这10byte空间未初始化
release下可能为任意值(0~255) for循环遍历次数为(0~10)次 循环过程不可测
在debug下全为非零值 这时strlen(c) 返回0 所以for循环中赋值语句根本不会执行哪怕一次