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