まず、スペースを a に割り当てる必要があります。
そのコードが実行されると、a はおそらく所有していないメモリ内のスペースを指します。
それにアクセスしようとすると (実際には + 1233245613 にアクセスしようとすると)、明らかに所有していないメモリ内のスペースにアクセスすることになります。
#include <stdio.h>
#include <stdint.h>
int main(){
uint32_t *a;
uint32_t idx=1233245613;
a = malloc(sizeof(unit32_t) * (idx+1));//+1 cause remember, arrays are 0-based
if(a == NULL)
{
printf("Array could not be allocated");
return 1;
}
a[idx]=1233;
free(a);//good practice to avoid memory leaks
return 0;
}
しかし、それでもGIANT配列を使用しているという問題は解決しません。標準的なセットアップ (デスクトップまたはほとんどのサーバーでさえ) は、4.6GB のメモリを割り当てようとすると、停止します。したがって、それを考慮していない限り、おそらく一歩下がって、何をしようとしているのか、どのようにしようとしているのかを再考する必要があるでしょう.