c语言 - 我正在使用malloc,我的程序崩溃了



今天我弄乱了malloc和整数指针。程序的设置使其将内存位置分配给整数指针,然后用数组等一堆整数填充内存位置,然后打印所有整数。问题是当它完成运行时它会崩溃。我怀疑是malloc导致了这个问题。

这是代码

#include<stdio.h>
#include<stdlib.h>
int main(){
    int *name,x;
    char y;
    name=malloc(sizeof(int));
    for(x=0;x<500;x++){
        name[x]=x;
    }
    for(x=0;x<500;x++){
        printf("%d ",name[x]);
    }
    scanf("%c",&y);
    free(name);
    return 0;
}

请帮忙。谢谢!

name = malloc(sizeof(int));

是问题所在。这样,您只能在数组中存储一个 int。尝试

name = malloc(sizeof(int) * 500);

相反。

呃,"malloc()"并没有让你的程序崩溃。

您正在使程序崩溃:)

建议:

  1. 检查返回 NULL 的 "name=malloc()" (即检查错误)。

  2. 不要为 1 个 int 分配空间("sizeof(int)"可能是四个字节),然后尝试写 500 个整数:)

  3. 不要用"500"这样的"幻数"乱扔代码 - 改用常量。

建议的更改:

#include<stdio.h>
#include<stdlib.h>
#define NELMS 500
int main(){
    int *name = NULL,x;
    char y;
    name=malloc(sizeof(int) * NELMS);
    if (!name) {
      perror ("Unable to allocate memory!");
      return 1;
    }
    for(x=0;x<NELMS;x++){
        name[x]=x;
    }
    for(x=0;x<NELMS;x++){
        printf("%d ",name[x]);
    }
    scanf("%c",&y);
    free(name);
    return 0;
}

您正在分配内存以仅存储一个int。您需要的是:

名称=malloc(500*sizeof(int));

相关内容

  • 没有找到相关文章

最新更新