Bienvenido a Preguntas omegaUp, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

¿Cómo evito que se congele mi programa?

0 votos

Tengo un vector o arreglo de esta manera.
Como evito que mi programa se congele aparte omegaUp,me lo marca como RUNTIME ERROR, aquí es donde radica el problema.

unsigned long long int tam = 10000000;
unsigned long long int arr[tam];

El problema es de PRIMOS CONACUP.

¿Qué hago?

Ayuda.

propuesto por anónimo 30 de Dic, 2014

1 Respuesta

0 votos

si te marca RTE, no es porque tu programa se haya congelado, sino porque hizo una operación inválida, como acceder fuera de los límites de un arreglo ("congelarse" se usa más bien para los programas que se quedan esperando interacción del usuario o se tardan mucho en hacer una operación, eso sería un TIME LIMIT EXCEEDED).

ya intentaste correr tu programa pasándole números muy grandes, como los que indica el problema? (el límite son 50,000,000 y tu arreglo solo puede contener 10,000,000).

respondido por lhchavez (31,670 puntos) 31 de Dic, 2014
Si, ya lo hice.
Que recomiendas hacer, ¿buscar otro método?
Cuando le paso números tales como 50,000,000 y 10,000,000 se traba, bueno que tenga esa magnitud de cifras.
depende dónde estés declarando el arreglo, puede ser que eso sea lo que está fallando. si lo estás declarando así en una función, ese arreglo se declara en el stack, que es una región de la memoria que es poquito más rápido accederla pero es de tamaño limitado. para arreglos más grandes quizás no quepa y el programa termine.

Si necesitas declarar arreglos grandes, hazlo afuera de todas las funciones hasta arriba en el programa, o si _necesitas_ hacerlo en una función, en C++11 intenta hacer #include <memory> y declarar tu arreglo así:

std::unique_ptr<unsigned long long int[]> arr(new unsigned long long int[tam]);

unique_ptr se encarga de que en cuanto salgas de la función, el arreglo se libere para no desperdiciar memoria.
Podrias poner un ejemplo con unique_ptr y memory, me da error. Un codigo sencillo gracias.
Me sirvio declarar el arreglo fuera de las funciones, ahora tengo mas problemas con HA SUPERADO EL LIMITE DE SALIDA Y TIEMPO LIMITE EXECEDIDO. HABRÍA ALGUNA FORMA DE CONTACTARTE PARA QUE ME AYUDES. Este es mi facebook: https://www.facebook.com/victoralebryant
...