不初始化的malloced内存在不同环境中的不同行为

ars*_*t3k 2 c arrays malloc char

我正在实现一个与在C中使用动态分配相关的程序.
在Visual Studio 2017和其他IDE(Dev C++,Codeblocks等)上测试同一段代码我有不同的行为:

size_t newDim = 9;
char *p = malloc((newDim + 1) * sizeof(char));
p[newDim] = '\0';
printf("%d\n", strlen(p));
Run Code Online (Sandbox Code Playgroud)

Visual Studio上printf()的输出是:9
其他IDE:3有时候4.
但是当我用dim-1字符填充数组时,相同的printf()会在其他IDE上生成正确的输出.我认为不同的编译器有不同的管理分配内存的方法,有人可以更详细地解释问题吗?
谢谢

Eug*_*Sh. 5

malloc 没有初始化分配的内存,因此分配的空间可能在任意位置有零,给出不同的字符串长度.