39 lines
832 B
C++
39 lines
832 B
C++
/*
|
|
* 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;
|
|
}
|
|
|