/*
 * Deliberately leak memory
 *
 * Free memory decreases for a second.
 * However, because the program quits, the kernel frees the used memory
 *
 * If run for some time, my swap space would fill, afterwards my computer is brought to a halt.
 *
 */
#include <iostream>

#define K 1000
#define M K*K
#define G K*M

#define MEMORY_SIZE_IN_CHARS G

void make_throwaway_ptrs(int leak_size ) {
	for ( int i = 0; i < leak_size ; i++)
	{
		char* throwaway_ptr = new char;
	}

	// oops, we are not returning the pointers
	// this means it goes out of scope when the function ends
}


int main() {
	make_throwaway_ptrs(MEMORY_SIZE_IN_CHARS);

	std::cout << "We leaked " << MEMORY_SIZE_IN_CHARS * sizeof " " << " bits" << std::endl;


	std::cout << "Ready to kill the process? (press Enter)" << std::endl;
	std::cin.ignore();
	return 0;
}

