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上生成正确的输出.我认为不同的编译器有不同的管理分配内存的方法,有人可以更详细地解释问题吗?
谢谢
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |