Estoy implementando un programa secuencial para ordenar como quicksort. Me gustaría probar el rendimiento de mi programa en una gran variedad de 1 o 10 mil millones de enteros. Pero el problema es que obtengo un error de segmentación debido al tamaño de la matriz.¿Cómo declarar y usar grandes matrices de mil millones de enteros en C?
Un código de ejemplo de declaración de esta matriz:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000000000
int main(int argc, char **argv)
{
int list[N], i;
srand(time(NULL));
for(i=0; i<N; i++)
list[i] = rand()%1000;
return 0;
}
tengo una propuesta para utilizar la función mmap. Pero no sé cómo usarlo? ¿Alguien puede ayudarme a usarlo?
Estoy trabajando en Ubuntu 10.04 64-bit, gcc versión 4.4.3.
Gracias por sus respuestas.
¿Cuánta memoria física tiene su computadora? – BlueCode
@BlueCode: Probablemente eso no importe; es la memoria virtual lo que importa; no toda la memoria asignada en el espacio de direcciones de un proceso debe ser respaldada inmediatamente por la RAM. –
intente ponerlo en el montón en lugar de la pila. Es bastante probable que el tamaño máximo de la pila esté limitado por el sistema operativo o el tiempo de ejecución c – pm100