gpt4 book ai didi

c - 未初始化的 malloc 内存在不同环境中的不同行为

转载 作者:行者123 更新时间:2023-12-02 09:14:50 24 4
gpt4 key购买 nike

我正在实现一个与 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));

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

最佳答案

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

关于c - 未初始化的 malloc 内存在不同环境中的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48177106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com