怎么扩大数组的范围,我用500000运行不了,用50就行了

img


我想写成str【50000】这种,有什么简单办法吗,怎么扩大数组的范围,我用500000运行不了,用50就行了

用malloc


#include<stdio.h>
#include <malloc.h>
#include <memory.h>
int main(){
 
int* value = (int *)malloc(100000*sizeof(int));;
printf("over\n");
return 0;
}

内存太大

c这种写法是在内存中申请一块空间,而且是连续的。int一般是4个字节,如果要申请500000,那大概就是2000000个字节,即大概2mb。一般大内存的机器,比较空闲的情况应该也能分配出来给你。如果机器内存比较小,又比较忙,开机也很久了,也是有可能分不出来的。
你可以想象一下,每次都不停的分配内存,内存被分配的支离破碎。即碎片化了。可能总的空闲看起来很多。但是连续的大空间不一定有。