commit e8a8377330aad0d405930a4b4f2addd867014428 Author: ari melody Date: Sun Feb 11 00:36:54 2024 +0000 it allocates memory diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..326c5a6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.exe +**/.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..c58f4e5 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# memory allocator + +it allocates memory *(in gibibytes (GiB))* + +## how to use + +- run the executable +- enter how many gibibytes you want (max is how many gibibytes of memory you have) +- confirm (y) +- wait for the program to allocate the memory +- your memory is allocated +- press any key or CTRL+C to free the memory and exit the program +- ??? +- profit + +## how to compile + +- get a c compiler (i use gcc) +- `gcc -o ./allocatememory.exe ./main.c` +- ??? +- profit + +## why + +i was bored diff --git a/main.c b/main.c new file mode 100644 index 0000000..7e2c30c --- /dev/null +++ b/main.c @@ -0,0 +1,47 @@ +#include +#include + +int main() { + + long long unsigned int size = 0; + + printf("please enter the number of sizes (GiB) you would like to allocate (i.e. 4 = 4GiB):\n> "); + int digit = 0; + while (1) { + char input = getchar(); + if (input == '\n') break; + if (input < '0' || input > '9') continue; + + char number = input - 48; + if (digit > 0) number = number * 10 * digit; + if (input == '0') number = 10 * digit; + + size = size + number; + digit++; + } + + size = size * 1024 * 1024 * 1024; + + printf("you are about to allocate %llu bytes of heap memory. are you sure? (y/n)\n> ", size); + + char input = getchar(); + if (input != 'y') return 0; + while (getchar() != '\n'); + + printf("please wait...\n"); + char* wtf = (char*) malloc(size * sizeof(char)); + + for (int i = 0; i < size; i++) { + wtf[i] = 255; + } + + printf("%d bytes of heap memory has been allocated. you are insane.\n", size); + printf("press any key to release this memory, or CTRL+C to exit the program.\n"); + + getchar(); + + free(wtf); + + return 0; + +}