gpt4 book ai didi

c - C 中的最大数组程序?

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:17 24 4
gpt4 key购买 nike

使用以下代码,我试图创建一个数字数组,然后对它们进行排序。但是如果我设置了一个高数组大小(MAX),程序会在最后一个“随机”生成的数字处停止并且根本不会继续排序。谁能帮我解决这个问题?

#include <stdio.h>

#define MAX 2000000

int a[MAX];
int rand_seed=10;

/* from K&R
- returns random number between 0 and 62000.*/
int rand();
int bubble_sort();

int main()
{
int i;

/* fill array */
for (i=0; i < MAX; i++)
{
a[i]=rand();
printf(">%d= %d\n", i, a[i]);
}

bubble_sort();

/* print sorted array */
printf("--------------------\n");
for (i=0; i < MAX; i++)
printf("%d\n",a[i]);

return 0;
}

int rand()
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 62000;
}

int bubble_sort(void)
{
int t, x, y;
/* bubble sort the array */
for (x=0; x < MAX-1; x++)
for (y=0; y < MAX-x-1; y++)
if (a[y] > a[y+1])
{
t=a[y];
a[y]=a[y+1];
a[y+1]=t;
}
return 0;
}

最佳答案

问题是你将数组存储在全局部分,C 不保证它可以支持的全局部分的最大大小,这是操作系统、arch 编译器的功能。
因此,不是创建一个全局数组,而是创建一个全局 C 指针,使用 malloc 分配一个大块。现在内存保存在堆中,堆更大并且可以在运行时增长。

关于c - C 中的最大数组程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190415/

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