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#include <iostream>
#include <new>
using namespace std;
//Determines the maximun size of memory.
int maximum_size ()
{
int n = 1;
int * p;
do
{
p = new ( nothrow ) int[n];
n++;
}
while ( p != nullptr );
delete[] p;
return n;
}//end of maximum_size
int main ( void )
{
/*
Se declara una variable tipo entero para
guardar el tamaño del array.
Se declara un puntero a un puntero a un flotante:
*pointer --> *pointer --> float
*/
int size = maximum_size();
float** MainArray = nullptr;
MainArray = new float*[size];
cout << "Allocating..." << endl;
for ( int i = 0 ; i < size ; i++ )
{
float* SubArray = nullptr;
SubArray = new float[size];
for ( int j = 0 ; j < size ; j++ )
{
SubArray[j] = ( float ) j;
}
MainArray[i] = SubArray;
}
cout << size << "M.B. Allocated!" << endl << endl;
/*
La variable "MainArray" apunta a "SubArray" y
"SubArray" apunta a un valor flotante. Por lo
tanto, tenemos un Array bidimensional:
*MainArray --> *SubArray --> Float ==> BidimensionalArray
Después de alojar la memoria, la liberamos con
"delete[]", le proveemos una puntero a "delete[]"
y después asignamos el puntero como "nullptr" como en
el siguiente bloque de codigo.
*/
for ( int i = 0 ; i < size ; i++ )
{
delete[] MainArray[i];
MainArray[i] = nullptr;
}
delete[] MainArray;
MainArray = nullptr;
cout << "-----------------------------------" << endl;
cout << "Memory cleared!!" << endl;
return 0;
}//end of main