Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2015, 05:15
cristiansc93
Invitado
 
Mensajes: n/a
Puntos:
RAM allocation - Duda sobre tamaño maximo

Soy estudiante, no sean tan estrictos =7
Descripcion de programa

Intentar llenar la mayor cantidad de ram posible.

Objetivo

Al consumir la mayor cantidad de ram posible, el sistema operativo cerrara o suspendera procesos innecesarios y recuperara cualquier posible escape de ram.

Problemas

Termina anormalmente debido al tamaño del array.

Observaciones.

Funciona con tamaños menores. Tal vez si considero 300 mb para win7 y los resto al tamaño del array funcione, pero quisiera evitar esta solucion.


Código C++:
Ver original
  1. #include <iostream>
  2. #include <new>
  3.  
  4. using namespace std;
  5.  
  6. //Determines the maximun size of memory.
  7. int maximum_size ()
  8. {
  9.     int n = 1;
  10.     int * p;
  11.    
  12.     do
  13.         {
  14.             p = new ( nothrow )   int[n];
  15.             n++;
  16.         }
  17.     while ( p != nullptr );
  18.    
  19.     delete[] p;
  20.    
  21.     return n;
  22. }//end of maximum_size
  23.  
  24.  
  25. int main ( void )
  26. {
  27.  
  28.     /*
  29.    
  30.    
  31.     Se declara una variable tipo entero para
  32.     guardar el tamaño del array.
  33.    
  34.     Se declara un puntero a un puntero a un flotante:
  35.    
  36.         *pointer  -->  *pointer  -->  float
  37.    
  38.    
  39.     */
  40.    
  41.     int size = maximum_size();
  42.    
  43.     float** MainArray = nullptr;
  44.     MainArray = new float*[size];
  45.    
  46.     cout << "Allocating..." << endl;
  47.    
  48.     for ( int i = 0 ; i < size ; i++ )
  49.         {
  50.             float* SubArray = nullptr;
  51.             SubArray = new float[size];
  52.            
  53.             for ( int j = 0 ; j < size ; j++ )
  54.                 {
  55.                     SubArray[j] = ( float ) j;
  56.                 }
  57.                
  58.             MainArray[i] = SubArray;
  59.         }
  60.        
  61.     cout << size << "M.B. Allocated!" << endl << endl;
  62.    
  63.     /*
  64.    
  65.    
  66.     La variable "MainArray" apunta a "SubArray" y
  67.     "SubArray" apunta a un valor flotante. Por lo
  68.     tanto, tenemos un Array bidimensional:
  69.    
  70.         *MainArray  -->  *SubArray  -->  Float  ==>  BidimensionalArray
  71.    
  72.     Después de alojar la memoria, la liberamos con
  73.     "delete[]", le proveemos una puntero a "delete[]"
  74.     y después asignamos el puntero como "nullptr" como en
  75.     el siguiente bloque de codigo.
  76.    
  77.    
  78.     */
  79.    
  80.     for ( int i = 0 ; i < size ; i++ )
  81.         {
  82.             delete[]  MainArray[i];
  83.             MainArray[i] = nullptr;
  84.         }
  85.        
  86.     delete[] MainArray;
  87.     MainArray = nullptr;
  88.     cout << "-----------------------------------" << endl;
  89.     cout << "Memory cleared!!" << endl;
  90.    
  91.     return 0;
  92.    
  93. }//end of main