Skip to content
Snippets Groups Projects
Commit eb891da6 authored by j2-tulloch's avatar j2-tulloch :speech_balloon:
Browse files

Upload bumpall.hpp

parent b3ec1717
No related branches found
No related tags found
No related merge requests found
#include <cstddef>
#include <iostream>
class BumpAllocator {
char* start; // Pointer to the start of the allocated memory block
char* current; // Pointer to the current position in the memory block
size_t size; // Total size of the memory block
public:
// Constructor for the BumpAllocator
BumpAllocator(size_t size) : size(size) {
start = new char[size]; // Allocate a memory block of the given size
current = start; // Initialize the current pointer to the start of the block
}
void* allocate(size_t allocSize) {
// Check if there is enough space left in the block for the requested size
if (current + allocSize - start > size) {
//std::cout << "Not enough space in the block for allocation!" << std::endl;
return nullptr; // Return nullptr if there is not enough space
}
void* alloc = current; // Store the current position to return
current += allocSize; // "Bump" the current pointer forward by the requested size
//std::cout << "Memory allocated successfully!" << std::endl;
return alloc; // Return the original current position
}
// Function to reset the allocator
void reset() {
current = start; // Reset the current pointer back to the start of the block
//std::cout << "Allocator reset!" << std::endl;
}
// Destructor for the BumpAllocator
~BumpAllocator() {
delete[] start; // Deallocate the memory block when the allocator is destroyed
//std::cout << "Memory block deallocated!" << std::endl;
}
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment