gpt4 book ai didi

c - 动态内存分配和普通内存分配有什么区别?

转载 作者:行者123 更新时间:2023-11-30 21:42:29 25 4
gpt4 key购买 nike

有人可以告诉我我在两种给定方法中使用的内存类型之间的区别吗因为在第一部分中,我的输出是这样的:

5-->1893664096-->32766-->-1358605976-->2-->1893664096

在第二种方法中我得到了这个:-

5-->0-->0-->0-->2-->0

下面是相关代码:-

方法一:

#include<stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d",&n);
int arr[n];
arr[3]=2;
for(int i=0;i<n;i++)
printf("-->%d",arr[i]);
return 0;
}

方法2:

int main()
{
int *a;
int n;
scanf("%d",&n);
a=(int*) malloc(sizeof(int)*n);
a[3]=2;
for(int i=0;i<n;i++)
printf("-->%d",a[i]);
return 0;
}

最佳答案

malloc() 不应将其返回的内存清零。看来在您的情况下,它恰好是从系统中检索以前未使用过且仍然为零的内存。你当然不能指望这一点。另一方面,calloc() 在返回之前会为您清零内存。

关于c - 动态内存分配和普通内存分配有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48463450/

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