gpt4 book ai didi

c++ - 在 C++ 中使用 malloc 后的行为

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:14 25 4
gpt4 key购买 nike

下面的代码是否调用了未定义的行为?据我所知,我们应该始终使用 new 来动态创建用户定义的对象,因为除了 malloc 之外,new 也会调用构造函数。

#include <cstdio>
#include <cstdlib>

struct om
{
int a;
void fun()
{
a=10;b=10;
}
private : int b;

} s1; // structure(om) variable...


typedef struct om node;

int main()
{
node *s2=(node *)malloc(sizeof(node));
s1.fun();
printf("%d",s2->a);
return 0;
}

上面的代码打印了0,也就是说s2->a自动初始化为0?所以我想知道程序实现的行为是定义的、未定义的还是定义好的?

最佳答案

malloc 不能保证初始化它分配的内存 - 如果您想要用 0 填充内存,请使用 calloc

关于c++ - 在 C++ 中使用 malloc 后的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3740374/

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