Compare commits
2 Commits
main
...
macOS-issu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f62574f588 | ||
|
|
a28f630878 |
11
.gitignore
vendored
11
.gitignore
vendored
@ -49,3 +49,14 @@ appimage-build/
|
|||||||
# libs
|
# libs
|
||||||
/libs/
|
/libs/
|
||||||
/vcpkg_installed/
|
/vcpkg_installed/
|
||||||
|
|
||||||
|
CMakeCache.txt
|
||||||
|
cmake_install.cmake
|
||||||
|
CMakeFiles/
|
||||||
|
Makefile
|
||||||
|
compile_commands.json
|
||||||
|
VoxelEngine
|
||||||
|
libVoxelEngineSrc.a
|
||||||
|
vctest
|
||||||
|
|
||||||
|
.vctest/settings.toml
|
||||||
|
|||||||
@ -4,9 +4,12 @@
|
|||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
#include <new>
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#else
|
||||||
|
#include <cstdlib>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace util {
|
namespace util {
|
||||||
@ -50,13 +53,21 @@ namespace util {
|
|||||||
std::mutex mutex;
|
std::mutex mutex;
|
||||||
|
|
||||||
void allocateNew() {
|
void allocateNew() {
|
||||||
std::unique_ptr<void, AlignedDeleter> ptr(
|
// Use posix_memalign on POSIX systems as aligned_alloc has stricter requirements
|
||||||
|
constexpr size_t alignment = alignof(T) < sizeof(void*) ? sizeof(void*) : alignof(T);
|
||||||
|
constexpr size_t size = sizeof(T);
|
||||||
|
void* rawPtr = nullptr;
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
_aligned_malloc(sizeof(T), alignof(T))
|
rawPtr = _aligned_malloc(size, alignment);
|
||||||
#else
|
#else
|
||||||
std::aligned_alloc(alignof(T), sizeof(T))
|
if (posix_memalign(&rawPtr, alignment, size) != 0) {
|
||||||
|
rawPtr = nullptr;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
);
|
if (rawPtr == nullptr) {
|
||||||
|
throw std::bad_alloc();
|
||||||
|
}
|
||||||
|
std::unique_ptr<void, AlignedDeleter> ptr(rawPtr);
|
||||||
freeObjects.push(ptr.get());
|
freeObjects.push(ptr.get());
|
||||||
objects.push_back(std::move(ptr));
|
objects.push_back(std::move(ptr));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user