From 05f2df34290af477b0fee49b75e5f56e1d6c83f9 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sat, 8 Dec 2018 12:58:04 +0100 Subject: Initial commit with kinda crappy unnumbered examples --- memory-classes.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 memory-classes.cpp (limited to 'memory-classes.cpp') diff --git a/memory-classes.cpp b/memory-classes.cpp new file mode 100644 index 0000000..19d17e9 --- /dev/null +++ b/memory-classes.cpp @@ -0,0 +1,53 @@ +#include "memory-classes.hpp" + +#include + + +lifo::lifo(std::size_t max_size_) : max_size(max_size_) { + m_storage = new int[max_size]; +} + +lifo::~lifo() { + if (m_storage != nullptr) + delete m_storage; +} + +void lifo::push(int v) { + if (m_top >= max_size) + return; + + m_storage[m_top++] = v; +} + +int lifo::pop() { + if (m_top <= 0) + return 0; + + return m_storage[--m_top]; +} + + +int main(int argc, char *argv[]) { + + // the lifo allocates a memory buffer + lifo stack(5); + + stack.push(1); + stack.push(2); + stack.push(3); + stack.push(4); + stack.push(5); + + std::cout << stack.pop() << std::endl; + std::cout << stack.pop() << std::endl; + std::cout << stack.pop() << std::endl; + std::cout << stack.pop() << std::endl; + std::cout << stack.pop() << std::endl; + + return 0; + + // here, when the scope ends the stack object is destroyed + // as it goes *out of scope*, and so the destructor is called + // which frees the memory + +} -- cgit v1.2.1