gpt4 book ai didi

c - 进程已完成,退出代码为 11 | malloc 期间出错

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

<分区>

试图理解 C 中的内存分配。在尝试使用指向整数的指针创建两个数组时遇到问题。请看下面的代码:

#include <stdio.h>
#include <stdlib.h>

int main() {

int *a;
int *b;

for (int i = 0; i<4;i++)
{
printf("Enter value \n");
a[i]=(int *)malloc(sizeof(int));
b[i]=(int *)malloc(sizeof(int));
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
for (int i =0;i<4;i++)
{
printf("%d = %x\n ",a[i],&a[i]);

}
for (int i =0;i<4;i++)
{
printf("%d = %x\n ",b[i],&b[i]);

}

return 0;
}

我正在 CLion 上使用 C11。在运行时面临以下错误。有人可以解释这段代码有什么问题吗?

Enter value 

Process finished with exit code 11

b is being shown as NULL during debugging

“b 在调试期间显示为 NULL”

更新:在另一个 IDE 上尝试过,其中“a”本身没有分配任何内存。它直接给我段错误。

更新 2:改变:

int *a;
int *b;

int *a = NULL;
int *b = NULL;

至少停止了这段代码的行为方式。一旦我尝试将内存分配给 a[i],它就会给我段错误(这是错误的,现在我明白了)。

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